더북(TheBook)

지역 함수와 변수에는 가시성 변경자를 붙일 수 없다는 점에 유의하라.

자바 vs. 코틀린 일반적으로 자바 언어와 JVM에서 모든 메서드는 어떤 클래스 내부에 들어있어야 한다. 따라서 어떻게 코틀린 최상위 함수나 지역 함수를 JVM 플랫폼에서 컴파일할 수 있는지 궁금할 것이다. 1장 강력하고 실용적인 코틀린에서 JVM이 볼 때 최상위 main() 함수는 코틀린 파일마다 자동으로 만들어지는 특별한 파사드 클래스의 정적 멤버라는 사실을 설명했다. 지역 함수의 경우에도 코틀린 컴파일러는 (최상위 함수와) 비슷한 트릭을 써서 지역 함수를 정의하며, 지역 함수를 둘러싼 영역의 변수나 파라미터 목록 등의 문맥을 포획해주는 특별한 클래스(이를 자바의 지역 클래스와 비교할 수 있다)를 선언한다. 이 말은 지역 함수를 호출할 때마다 이런 특별한 클래스 객체를 생성하는 부가 비용이 든다는 뜻이다. 5장 고급 함수와 함수형 프로그래밍 활용하기에서 람다를 설명할 때 이 주제를 다시 다루겠다.

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