리시버를 명시적으로 참조하라
this - 함수와 프로퍼티를 지역 또는 톱레벨 변수가 아닌 다른 리시버로부터 가져온다는 것을 나타낼 수 있다 - 확장 리시버를 명시적으로 참조가 가능하다. (확장 메서드에서의 this)
여러 개의 리시버
스코프 내부에 둘 이상의 리시버가 있는 경우, 리시버를 명시적으로 나타내자 짧게 적을 수 있다는 이유만으로 리시버를 제거하지 말자.
레이블 없이 리시버를 사용하면 가장 가까운 리시버를 의미한다. 리시버는 주로 apply, with, run, also, let에서 사용된다.
@ : qualified this - outer scope -> this
DSL 마커
코틀린 DSL : 여러 리시버를 가진 요소들이 중첩되어도 리시버를 명시적으로 붙이지 않도록 설계되어 있다.
DSL에서 외부 스코프에 있는 리시버를 명시적으로 적게 강제하고 싶다면 Dsl 메타 어노테이션을 사용한다.
@DslMaker
:암묵적으로 외부 리시버를 사용하는 것을 막는 메타 어누테이션 (어노테이션을 위한 어노테이션)
가장
Last updated