Kotlin/포스팅

코틀린 단항 연산

짜집퍼박사(짜박) 2024. 1. 3. 22:31

코틀린에서는 단항 연산자를 오버로딩하여 사용자 정의 클래스에 대해 해당 연산을 정의할 수 있습니다. 단항 연산자 중에서는 주로 - (마이너스) 연산자와 ! (논리 부정) 연산자가 오버로딩되어 사용됩니다.

 

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