스칼라 폐쇄
폐쇄 함수 이상의 변수의 선언 외부에 의존하는 값을 반환하는 함수이다.
클로저는 일반적으로 단순히 함수 내에서 다른 함수는 지역 변수를 액세스 할 수있는 것으로 간주된다.
다음과 같이이 익명 함수 :
val multiplier = (i:Int) => i * 10
함수 본문 함수 파라미터로서, 변수 I를 갖는다. 다음과 같은 코드의 또 다른 조각 :
val multiplier = (i:Int) => i * factor
i 및 요소 : 승수의 두 개의 변수가 있습니다. 내가 함수의 형식 매개 변수 인 경우 승수, 내가 새로운 가치를 부여 할 때, 함수가 호출됩니다. 다만, 요인은 형식 매개 아니지만 자유 변수는 다음과 같은 코드를 고려해
var factor = 3 val multiplier = (i:Int) => i * factor
여기에서 우리는이 변수는 함수의 외부에서 정의, 자유 변수 요인을 소개합니다.
승산기 기능 변수 따라서, 함수 정의 외부 변수를 참조하기 때문에,이 기능의 프로세스의 정의가없는 변수는 폐 기능을 구성하는 포착하는 "폐쇄"로 정의 하였다.
전체 예제
object Test { def main(args: Array[String]) { println( "muliplier(1) value = " + multiplier(1) ) println( "muliplier(2) value = " + multiplier(2) ) } var factor = 3 val multiplier = (i:Int) => i * factor }
위의 코드의 구현, 출력은 :
$ scalac Test.scala $ scala Test muliplier(1) value = 3 muliplier(2) value = 6