-
1.3 평가 전략 및 종료scala/functional programming 2024. 4. 4. 19:47
평가(Evaluation) 종료
- call by value 로 expression 이 종료되면, call by name 으로도 expression 이 종료된다.
- 그러나 call by name 으로 expression 이 종료된다고 해서, 항상 call by value 로 expression 이 종료되는 것은 아니다.
다음 예를 살펴보자
def loop: Int = loop def first(x: Int, y: Int) = x
- call by value
first(1, loop)
x=1 과 loop 가 evaluation 되어 expression 이 종료되지 않는다.
- call by name
first(1, loop)
x=1 만 evaluation 되어 (loop 는 evaluation 되지 않고) expression 이 종료된다.
scala 의 Evaluation
scala 에서는 기본적으로 call by value 가 적용된다.
call by name 을 사용하려면 아래의 y: => Int 처럼 표현하면 된다.def loop: Int = loop def constOne(x: Int, y: => Int) = 1 constOne(1+2, loop) // expression 이 종료됨, 결과: 3 constOne(loop, 1+2) // expression 이 종료되지 않음
'scala > functional programming' 카테고리의 다른 글
1.6 블록과 어휘 범위 (0) 2024.04.04 1.5 예제: 뉴턴의 방법을 사용한 제곱근 (0) 2024.04.04 1.4 조건과 값 정의 (0) 2024.04.04 1.2 프로그래밍의 요소 (0) 2024.04.04 Scala의 함수형 프로그래밍 원칙 (0) 2024.04.04