[Learning Scala] 이름에 의한 호출 매개변수

YumeIroVillain·2023년 9월 14일
0

Chisel 독학

목록 보기
43/44

https://scastie.scala-lang.org/webserver3315/Qic3rLZDQYaDvYCEL6DZlg/13

def doubles(x: => Int) = {
  println("Now doubling " + x)
  x*2
}

def doubles2(x:Int) = {
  println("Now doubling2 " + x)
  x*2
}

def f(i:Int) = {
  println(s"Hello from f($i)")
  i
}

val result = doubles(f(8))
println(s"result is $result")
println("===================")
val result2 = doubles2(f(8))
println(s"result2 is $result2")

결과

Hello from f(8)
Now doubling 8
Hello from f(8)
result is 16
===================
Hello from f(8)
Now doubling2 8
result2 is 16

doubles는 name에 의한 argument를 받았고,
doubles2는 value에 의한 argument를 받았다.
이 때, 전자의 경우는 함수가 정말 그대로 넘어가기 때문에(단순한 값이라면 후자와 동일하지만), evaluation될 때마다 해당 함수가 "호출"된다.
따라서, Hello from f(8)이라는 문장이 한 번 더 출력되는 것을 확인할 수 있다.

어떻게 쓸 지 알 수 없는 기능이나, 일단 함수형 프로그래밍의 특징같아서 기록한다.

profile
HW SW 둘다 공부하는 혼종의 넋두리 블로그 / SKKU SSE 17 / SWM 11th

0개의 댓글