[kotlin] 코틀린(Kotlin) 확장 함수와 확장 프로퍼티

코틀린은 기존 클래스에 새로운 메소드를 추가하는 확장 함수(Extension Function) 및 확장 프로퍼티(Extension Property)를 지원합니다. 이 기능을 사용하면 기존 클래스의 변경 없이 새로운 기능을 추가할 수 있어서 코드의 가독성과 유지 보수성을 향상시킬 수 있습니다. 이번 포스트에서는 코틀린에서 확장 함수와 확장 프로퍼티를 어떻게 사용하는지 알아보겠습니다.

확장 함수(Extension Function)

확장 함수는 이미 존재하는 클래스에 새로운 함수를 추가하는 기능으로, 기존 클래스의 소스 코드를 변경하지 않고 새로운 함수를 정의할 수 있습니다. 확장 함수를 정의하기 위해서는 기존 클래스의 인스턴스를 참조하는 수신 객체(this)를 활용합니다.

fun String.removeSpaces(): String {
    return this.replace(" ", "")
}

위의 예제에서 String 클래스에 removeSpaces 함수를 추가했습니다. 이제 어떤 String 인스턴스에서든 removeSpaces 함수를 호출하여 공백을 제거할 수 있게 되었습니다.

확장 프로퍼티(Extension Property)

확장 프로퍼티는 기존 클래스에 새로운 프로퍼티를 추가하는 기능으로, 확장 함수와 마찬가지로 기존 클래스의 소스 코드를 변경하지 않고 새로운 프로퍼티를 정의할 수 있습니다.

val String.isPalindrome: Boolean
    get() = this == this.reversed()

위의 예제에서 String 클래스에 isPalindrome 프로퍼티를 추가했습니다. 이제 어떤 String 인스턴스에서든 isPalindrome 프로퍼티를 통해 해당 문자열이 회문인지 확인할 수 있게 되었습니다.

사용 예제

이제 확장 함수와 확장 프로퍼티를 사용하는 예제를 보겠습니다.

fun main() {
    val text = "hello world"
    println(text.removeSpaces()) // 출력: helloworld
    
    val palindrome = "level"
    println(palindrome.isPalindrome) // 출력: true
}

위의 예제에서는 이미 정의된 String 클래스에 새로운 기능을 추가했기 때문에 가독성이 향상되고 유지 보수가 용이해졌음을 확인할 수 있습니다.

확장 함수와 확장 프로퍼티는 코틀린에서 기존 클래스를 확장하여 새로운 기능을 추가하는 강력한 도구로, 코드를 더 모듈화하고 간결하게 작성할 수 있는 장점을 제공합니다.

이상으로 코틀린의 확장 함수와 확장 프로퍼티에 대해 알아보았습니다. 감사합니다.

References