Skip to content

Latest commit

 

History

History
20 lines (18 loc) · 917 Bytes

@DslMarker를 활용하여 외부 리시버 사용을 제한하자.md

File metadata and controls

20 lines (18 loc) · 917 Bytes

@DslMarker를 활용하여 외부 리시버 사용을 제한하자

리시버를 명시적으로 참조해야하는 이유

  • 가독성 및 코드 간략화를 위해 리시버를 제거하는 것이 일반적
  • 스코프 내부에 둘 이상의 리시버가 존재하는 경우 등 리시버를 명시적으로 참조하는 것이 안정적
  • 같은 맥락으로 apply 보다 also, let을 사용하여 명시적으로 리시버를 지정하는 것이 안정적
    • Nullable 처리 시 적합
  • 어떤 리시버의 함수인지 명확하게 명시하여 가독성 향상

DSL Marker란?

외부 리시버 사용을 제한하는 메타 어노테이션(어노테이션을 위한 어노테이션)

@DslMarker
annotation class HtmlDsl

fun table(f: TableDsl.() -> Unit) { ... }

@HtmlDsl
class TableDsl { ... }
  • 가장 가까운 리시버만 사용 강제
  • 명시적인 외부 리시버 사용 제한