코틀린에서는 단항 연산자를 오버로딩하여 사용자 정의 클래스에 대해 해당 연산을 정의할 수 있습니다. 단항 연산자 중에서는 주로 - (마이너스) 연산자와 ! (논리 부정) 연산자가 오버로딩되어 사용됩니다.
1. 마이너스 (-) 연산자 오버로딩
단항 마이너스 연산자 (-)를 오버로딩하기 위해서는 unaryMinus 함수를 정의합니다.
data class Complex(val real: Double, val imaginary: Double) {
// 단항 마이너스 연산자 오버로딩
operator fun unaryMinus(): Complex {
return Complex(-real, -imaginary)
}
}
fun main() {
val c1 = Complex(1.0, 2.0)
val result = -c1 // 단항 마이너스 연산자 사용
println(result) // 출력: Complex(real=-1.0, imaginary=-2.0)
}
2. 논리 부정 (!) 연산자 오버로딩
단항 논리 부정 연산자 (!)를 오버로딩하기 위해서는 not 함수를 정의합니다.
class MyBoolean(private val value: Boolean) {
// 단항 논리 부정 연산자 오버로딩
operator fun not(): MyBoolean {
return MyBoolean(!value)
}
}
fun main() {
val bool = MyBoolean(true)
val result = !bool // 단항 논리 부정 연산자 사용
println(result) // 출력: MyBoolean(value=false)
}
단항 연산자 오버로딩의 경우, 각 연산자에 해당하는 특별한 이름의 함수를 구현합니다. 연산자를 오버로딩할 때에는 해당 함수의 이름을 정확하게 따라야 합니다.
참고로 코틀린에서는 unaryMinus 함수와 - 연산자, 그리고 not 함수와 ! 연산자를 함께 지원하므로, 필요에 따라 선택하여 사용할 수 있습니다. 이러한 단항 연산자의 오버로딩을 통해 사용자 정의 클래스에 대해 적절한 의미를 부여할 수 있습니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 이항 연산 (0) | 2024.01.03 |
---|---|
코틀린 증가와 감소 (0) | 2024.01.03 |
코틀린 연산자 오버로딩 (0) | 2024.01.03 |
코틀린 리플렉션 호출 가능 (0) | 2024.01.03 |
코틀린 리플렉션 지정자와 타입 (0) | 2024.01.03 |