Files
2024-06-21 15:01:25 +09:00

1.7 KiB

조건문

if .. else if .. else ..

코틀린의 if문은 표현식이므로 값을 반환합니다. 그래서 삼항 연산자를 대신할 수 있습니다.

if (a > b) c = a
if (a > b) {
    c = a
} else {
    c = b
}
c = if (a > b) a else b

if 구문에 블록을 사용하는 경우에는 마지막 표현식이 반환값이 됩니다.

val c = if (a > b) {
    doSomething()
    a
} else {
    doSomething()
    b
}

if가 값을 반환하는 경우에는 반드시 else도 필요합니다.

when

다른 언어의 switch.. case 구문과 유사합니다. if와 마찬가지로 표현식이므로 값을 반환합니다.

자바와 달리, break를 사용하지 않습니다.

when(x) {
    1 -> print("x = 1")
    2 -> print("x = 2")
    else -> {
        print("x != 1 and x != 2")
    }
}

if와 마찬가지로 when이 값을 반환하는 경우에는 반드시 else도 필요하지만, whenenum에 대해서 사용될 때에는 else가 없어도 됩니다.

enum class Bit {
    ZERO, ONE
}

val value = when(someBitValue) {
    Bit.ZERO -> 0
    Bit.ONE -> 1
}

콤마(',')를 사용해서 여러 조건을 묶을 수 있습니다.

when(x) {
    1, 2 -> print("x = 1 or x = 2")
    else -> {
        print("x != 1 and x != 2")
    }
}

조건에 표현식을 사용할 수도 있습니다.

when(x) {
    s.toInt() -> print("..")
    else -> print(".....")
}

in또는 !in과 함께라면, 레인지나 컬렉션을 활용할 수도 있습니다.

when(x) {
    in 1..10 -> print("..")
    in someNumbers -> print("....")
    !in 10..20 -> print(".....")
    else -> print(".........")
}