더북(TheBook)

로컬 함수, 일급 함수, 블록 스코프가 한데 어우러지면 다음과 같이 재미난 상황이 연출된다.

fun returnFunction() {
  var outside = "outside";
  fun inner() {
    print outside;
  }

  return inner;
}

var fn = returnFunction();
fn();

inner()는 주변 함수8에 선언된 로컬 변수에 액세스한다. 이런 일이 가능할까? 이미 리스프(Lisp)에 있는 이 기능을 많은 언어가 차용했기 때문에 답이 “예”라는 것은 다들 알고 있을 것이다.

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