# 조건문 ## if .. else if .. else .. 코틀린의 `if`문은 표현식이므로 값을 반환합니다. 그래서 삼항 연산자를 대신할 수 있습니다. ```kotlin if (a > b) c = a ``` ```kotlin if (a > b) { c = a } else { c = b } ``` ```kotlin c = if (a > b) a else b ``` `if` 구문에 블록을 사용하는 경우에는 마지막 표현식이 반환값이 됩니다. ```kotlin val c = if (a > b) { doSomething() a } else { doSomething() b } ``` `if`가 값을 반환하는 경우에는 반드시 `else`도 필요합니다. ## when 다른 언어의 `switch.. case` 구문과 유사합니다. `if`와 마찬가지로 표현식이므로 값을 반환합니다. 자바와 달리, `break`를 사용하지 않습니다. ```kotlin when(x) { 1 -> print("x = 1") 2 -> print("x = 2") else -> { print("x != 1 and x != 2") } } ``` `if`와 마찬가지로 `when`이 값을 반환하는 경우에는 반드시 `else`도 필요하지만, `when`이 `enum`에 대해서 사용될 때에는 `else`가 없어도 됩니다. ```kotlin enum class Bit { ZERO, ONE } val value = when(someBitValue) { Bit.ZERO -> 0 Bit.ONE -> 1 } ``` 콤마(',')를 사용해서 여러 조건을 묶을 수 있습니다. ```kotlin when(x) { 1, 2 -> print("x = 1 or x = 2") else -> { print("x != 1 and x != 2") } } ``` 조건에 표현식을 사용할 수도 있습니다. ```kotlin when(x) { s.toInt() -> print("..") else -> print(".....") } ``` `in`또는 `!in`과 함께라면, 레인지나 컬렉션을 활용할 수도 있습니다. ```kotlin when(x) { in 1..10 -> print("..") in someNumbers -> print("....") !in 10..20 -> print(".....") else -> print(".........") } ```