자바의 if 문과 코틀린의 if 문은 무엇이 다를까? 차이점은 코틀린 if를 식으로 사용할 수 있다는 것이다. if 식을 사용하면 max 함수를 더 단순화할 수 있다.
fun max(a: Int, b: Int) = if (a > b) a else b
if의 두 가지 중 어느 쪽이 블록인 경우에도 마찬가지다. 이 경우에는 블록 맨 끝에 있는 식의 값이 블록 전체의 값이 된다.
fun main() { val s = readLine()!! val i = s.indexOf("/") // 10/3 같은 문자열을 /를 기준으로 10과 3으로 나눠서 나눗셈을 수행한다 val result = if (i>= 0) { val a = s.substring(0, i).toInt() val b = s.substring(i + 1).toInt() (a/b).toString() } else "" println(result) }
if 문을 식으로 사용할 때는 양 가지가 모두 있어야 한다. else 가지가 없기 때문에 다음 코드는 컴파일되지 않는다.
val max = if (a > b) a // error: 'if' must have both main and 'else' branches if used as an expression