더북(TheBook)

자바의 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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.