더북(TheBook)

여기서 무슨 일이 일어나는지 이해하려면 람다 표현식에 관한 이해를 가다듬어야 한다. 람다 표현식은 세 가지로 구성된다.

1. 코드 블록

2. 파라미터

3. 자유 변수(파라미터도 아니고 코드 내부에도 정의되지 않은 변수)의 값

 

앞의 예제에서는 람다 표현식이 자유 변수 두 개(textcount)를 포함한다. 람다 표현식을 나타내는 자료 구조는 이들 변수의 값(여기서는 "Hello"와 1000)을 저장해야 한다. 이 경우 람다 표현식이 이들 값을 캡처capture했다고 말한다(캡처 방법은 구현의 세부 사항이다. 예를 들어, 어떤 구현에서는 람다 표현식을 단일 메서드를 갖춘 객체로 변환하고, 자유 변수들의 값을 해당 객체의 인스턴스 변수에 복사한다).

<Note>

자유 변수들의 값을 포함하는 코드 블록의 기술 용어는 클로저 closure다. 누군가 자신이 사용하는 언어에 클로저가 있다고 흐뭇해한다면, 자바에도 클로저가 있으니 안심해도 좋다. 자바에서는 람다 표현식이 클로저다. 사실 이너 클래스가 클로저로 존재해왔다. 자바 8은 매력적인 문법으로 클로저를 제공한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.