코틀린
코틀린의 확장 함수, 유형 별칭, 봉인된 클래스를 알아보자
플라퉁
2023. 6. 26. 10:03
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
반응형