When Expression

2019. 2. 3. 17:17Programming/Kotlin

반응형

Udacity 강의를 보던 중, 내가 영어를 이렇게 못했나 싶을정도로 놓치는 내용이 많은 것 같아서, 내용과는 별개로 Kotlinlang.org의 내용을 정리하기로 했다.

When Expression

When은 C와같은 언어에서 Switch와 비슷한 동작을 수행한다.

when (x) {
    1 -> print("x == 1")  //x가 1이면 x == 1을 출력한다.
    2 -> print("x == 2")  //x가 2이면 x == 2를 출력한다.
    3, 4 -> print("x == 3 or x == 4") //x가 3 혹은 4이면, x == 3 or x == 4를 출력한다.
    in 5..10 -> print("x is in the range (5~10)") //x가 5~10 범위 내에 있을 때, x is in the range (5~10)을 출력한다.
    else -> {  // Note the block
        print("x is neither 1 nor 2")
    }
}

when은 if-else if 구조를 대체할수도 있다. argument가 주어지지 않으면 분기조건은 boolean 표현을 따라가며, true값일 때 각 분기조건이 실행된다.

when {
  x.isOdd() -> print("x is odd")
  x.isEven() -> print("x is even")
  else -> print("x is funny")
}

위의 when에서 arguments는 주어지지 않았으므로, 각 분기는 주어진 Boolean 조건을 따르게 된다. x가 홀수이면 print("x is odd")가 실행되며, 짝수일때는 print("x is even")이 실행된다. 만약 어떤 분기조건에도 해당하지 않는다면, else에 해당하는 print("x is funny")가 실행되게 된다.


Udacity의 Kotlin Bootcamp for Programmers에는 나오나 Kotlinlang.org의 When Expression 항목에는 나오지 않는 게 있는데, 함수의 return에 when을 사용할 수 있다.

fun isBiggerThan10(param_x:Int) :Boolean{
  return when {
    param_x>10 -> true
    else -> false
  }
}

isBiggerThan10(param_x)를 실행하게 되면, 넘겨준 파라메터의 값에 따라서 Boolean값이 반환된다. 10보다 큰 값을 넘겨주면 true가 반환되며, 그 외의 값을 넘겨주면 false가 반환된다. 분기조건에 해당되는 값이 반환되므로, 유용하게 사용할 수 있다.

반응형