- 가독성 및 코드 간략화를 위해 리시버를 제거하는 것이 일반적
- 스코프 내부에 둘 이상의 리시버가 존재하는 경우 등 리시버를 명시적으로 참조하는 것이 안정적
- 같은 맥락으로 apply 보다 also, let을 사용하여 명시적으로 리시버를 지정하는 것이 안정적
- Nullable 처리 시 적합
- 어떤 리시버의 함수인지 명확하게 명시하여 가독성 향상
외부 리시버 사용을 제한하는 메타 어노테이션(어노테이션을 위한 어노테이션)
@DslMarker
annotation class HtmlDsl
fun table(f: TableDsl.() -> Unit) { ... }
@HtmlDsl
class TableDsl { ... }
- 가장 가까운 리시버만 사용 강제
- 명시적인 외부 리시버 사용 제한