this 키워드를 사용해 멤버 함수나 다른 확장에 접근할 수 있다. 클래스 내부에서 this를 생략할 수 있었던 것처럼 확장 함수 안에서도 this를 생략할 수 있다. 따라서 명시적으로 멤버를 한정시킬 필요가 없다.

    ExtensionFunctions/StrangeQuote.kt

    package extensionfunctions
    import atomictest.eq
    
    // singleQuote()를 두 번 적용해서 작은따옴표를 두 개 붙인다
    fun String.strangeQuote() =
      this.singleQuote().singleQuote() // [1]
    
    fun String.tooManyQuotes() =
      doubleQuote().doubleQuote()      // [2]
    
    fun main() {
      "Hi".strangeQuote() eq "''Hi''"
      "Hi".tooManyQuotes() eq "\"\"Hi\"\""
    }

    [1] thisString 수신 객체 타입에 속하는 객체를 가리킨다.

    [2] 최초로 doubleQuote() 함수를 호출할 때 수신 객체(this)를 생략한다.

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