minstudio

8. 확장 함수 (Extension Functions)

코틀린에서는 내가 만들지 않은 기존 클래스(예: String, List, 외부 라이브러리 클래스)에도 마치 내가 직접 멤버 함수를 추가한 것처럼 새로운 함수를 갖다 붙일 수 있습니다. 이를 확장 함수(Extension Function)라고 합니다.

클래스의 원본 소스코드를 건드리지 않고도 기능을 쉽게 확장할 수 있어 코틀린 표준 라이브러리를 극도로 풍부하게 만든 핵심 기술입니다.

// String 클래스에 나만의 커스텀 함수(removeFirstLast)를 갖다 붙입니다.
// 수신 객체 타입(String)에 마침표를 찍고 함수명을 정의합니다.
// 함수 내부에서 'this'는 호출하는 대상 문자열 자체를 가리킵니다.
fun String.removeFirstLast(): String {
    // 길이가 2보다 작으면 그냥 원본을 반환
    if (this.length <= 2) return this
    // 양 끝 문자를 자르고 반환
    return this.substring(1, this.length - 1)
}

fun main() {
    val myText = "Hello Kotlin"
    
    // 원래 String 클래스에 있는 메서드처럼 자연스럽게 호출 가능!
    val result = myText.removeFirstLast()
    
    println("원본: " + myText)
    println("확장 함수 적용 결과: " + result) // "ello Kotli"
}
8. 확장 함수 (Extension Functions) | Minstudio