본문 바로가기
코틀린

코틀린의 확장 함수, 유형 별칭, 봉인된 클래스를 알아보자

by 플라퉁 2023. 6. 26.
728x90
반응형

 

 

 

 

1. 확장 함수(Extension Functions): 확장 함수는 이미 존재하는 클래스에 새로운 함수를 추가하는 기능입니다. 다음은 문자열(String) 클래스에 확장 함수를 추가하는 예시입니다:

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

fun main() {
    val str = "Hello World"
    val newStr = str.removeWhitespace()
    println(newStr) // 출력: HelloWorld
}

위의 예시에서 removeWhitespace()는 String 클래스에 새로운 함수를 추가합니다. str 변수에 대해 removeWhitespace()를 호출하면 공백을 제거한 새로운 문자열을 반환합니다.

 

 

 

 

2. 유형 별칭(Type Aliases): 유형 별칭은 기존 유형에 새로운 이름을 붙이는 기능입니다. 다음은 Int에 유형 별칭을 추가하는 예시입니다:

typealias Age = Int

fun main() {
    val myAge: Age = 27
    println(myAge) // 출력: 27
}

위의 예시에서 Age는 Int의 유형 별칭입니다. myAge 변수를 Age 유형으로 선언하여 사용할 수 있습니다.

 

 

 

 

3. 봉인된 클래스(Sealed Classes): 봉인된 클래스는 특정 유형의 하위 클래스를 제한하는 기능입니다. 다음은 봉인된 클래스를 사용하는 예시입니다:

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
}

fun processResult(result: Result) {
    when (result) {
        is Result.Success -> println("Success: ${result.data}")
        is Result.Error -> println("Error: ${result.message}")
    }
}

fun main() {
    val successResult = Result.Success("Data retrieved successfully")
    val errorResult = Result.Error("Failed to retrieve data")

    processResult(successResult) // 출력: Success: Data retrieved successfully
    processResult(errorResult) // 출력: Error: Failed to retrieve data
}

위의 예시에서 Result는 봉인된 클래스로 선언되었습니다. Result에는 Success와 Error라는 두 개의 하위 클래스가 있습니다. processResult() 함수는 Result 객체를 받아와 해당 객체의 유형에 따라 다른 동작을 수행합니다. 이렇게 코틀린의 확장 함수, 유형 별칭, 봉인된 클래스와 같은 기능을 활용하여 코드를 더 간결하고 유연하게 작성할 수 있습니다. 이러한 기능들은 코틀린의 특징 중 하나로, 다양한 상황에서 유용하게 활용될 수 있습니다.

 

 

 

 

728x90
반응형

댓글