클로저
클로저 에 대한 괜찮은 설명을 가져왔다....
클로저 clo.sure라는 단어를 들어본 독자라면 람다가 클로저 (Clojure라는 프로그래밍 언어를 가리키는 것이 아니다)의 정의에 부합하는지 궁금할 것이다.
원칙적으로 클로저란 함수의 비지역 변수를 지유롭게 참조할 수 있는 함수의 인스턴스를 가리킨다. 예를 들어 클로저를 다른 함수의 인수로 전달할 수 있다. 클로저는 클로저 외부에 정의된 변수의 값에 접근하고, 값을 바꿀 수 있다. 자바 8의 람다와 익명 클래스는 클로저와 비슷한 동작을 수행한다.
람다와 익명 클래스 모두 메서드의 인수로 전달될 수 있으며 자신의 외부 영역의 변수에 접근할 수 있다. 다만 람다와 익명클래스는 람다가 정의된 메서드의 지역 변수의 값은 바꿀 수 없다. 람다가 정의된 메서드의 지역변숫값은 final 변수여야 한다. 덕분에 람다는 변수가 아닌 값에 국한되어 어떤 통작을 수행한다는 사실이 명확해진다.
이전에도 설명한 것처럼 지역 변숫값은 스택에 존재하므로 자신을 정의한스레드와생존을같이 해야하며 따라서 지역 변수는 final 이어야한다. 가변 지역 변수를 새로운 스레드에서 캡처할 수 있다면 안전하지 않은 동작을 수행할 가능성이 생긴다(인스턴스변수는 스레드가 공유하는 힘에 존재하므로 특별한 제약이 없다).
'IT' 카테고리의 다른 글
macbook pro 15' 2012 mid retina 무선랜 ac airport 교체! (0) | 2020.01.03 |
---|---|
한미 마이크로닉스 K61 키보드 블루투스 맵핑 및 유선 모드... (1) | 2018.10.15 |
ea6700 dd-wrt nvram 사이즈 극복방안 (0) | 2016.07.05 |
상당히 흥미로운? 글 .. [MEAN Stack] 스타트업을 위한 서비스개발 기술 스택 (0) | 2014.01.29 |
IBM thinkpad X24 외부 모니터 연결 1920 가능한가? (0) | 2012.02.03 |