Shunz Android Dev Note

코틀린 or infix 함수와 short circuiting 본문

Kotlin

코틀린 or infix 함수와 short circuiting

_Shun_ 2024. 1. 24. 23:34

 

코틀린에서 boolean 연산을 수행하는 두 가지 방법은 연산자인 && 와 || 또는 infix 함수를 사용하는 것입니다. 이들은 대부분 동일하지만 한 가지 중요한 차이점이 있습니다. 연산자들은 short circuiting을 수행하지만 infix 함수는 그렇지 않습니다.

 

short circuiting란?

결과가 왼쪽 피연산자로부터 이미 결정된 경우 (예: 왼쪽 피연산자가 || 에 대하여 true이고 &&에 대하여 false) 오른쪽 boolean 피연산자가 수행되지 않는 최적화입니다. 다음 예를 참조하시면 좀 더 이해가 쉬울 것입니다.

fun isTrue(): Boolean {
    println("이 함수는 true")
    return true
}

fun isFalse(): Boolean {
    println("이 함수는 false")
    return false
}

fun main() {
    val result1 = isTrue() || isFalse()
    println("결과1 : $result1")

    val result2 = isTrue() or isFalse()
    println("결과2 : $result2")
}

 

결과
----------------------------

이 함수는 true
결과1 : true
이 함수는 true
이 함수는 false
결과2 : true

 

이 두 가지 접근법은 모두 옳고 그름이 없지만, 차이점을 아는 것이 중요합니다. 연산자와 infix 함수가 기능적으로는 같은 역할을 합니다.

 

결론

or infix 함수가 왜 short circuiting을 지원하지 않는지는 아직 찾지 못했습니다. 성능상 지원하는것이 좋을것 같은데 다른 이유가 있는지 아시는분이 계시다면 코멘트 남겨주세요.

 

 

참고 자료

https://kotlinlang.org/docs/functions.html#infix-notation