# Kotlin 문법 - 제어흐름
# if 키워드의 응용
코틀린은 변수 할당시, 혹은 리턴값 지정시에 이런식으로 if구문이 사용 가능하다.
var x: Int = if (10 > 20) 5 else 10
var y = if (10 > 20) 5 else 10
# when
when은 switch의 상위호환 버전이라고 생각하면 된다.
fun when_example() {
when (x) {
1 -> println(1)
2 -> println(2)
3, 4 -> println("over 2")
in 5..10 -> println("5~10")
else -> println("else")
}
//switch와 if를 혼용한것 처럼 사용할 수 있다.
var abs = 50
when {
abs <= 10 -> println("a <= 10")
else -> println("a > 10")
}
}
또한 이런식으로 클래스와 섞어서 쓸수도 있다.
fun when_example2() {
val x = ob(2, true, 500)
when (x.value) {
maginNum(x.value) ->
println("x = $x , ${if (x.valid) "valid" else "invalid"}")
in (1..10) -> {
println("value: ${if (x.value < x.max) x.value else x.max}")
}
20, 21 -> println("test")
else -> println("test else")
}
}
//data class 저장용 객체에서 사용
data class ob(val value: Int, val valid: Boolean, val max: Int)
fun maginNum(a: Int): Int {
return if (a in (15..25)) a else 0
}
# 표현식으로서의 try catch
표현식으로서 사용할 경우 블록내의 제일 마지막 값을 반환하게 된다.
단 finally 구문은 반환하지 않으니 주의하도록 해야한다.
fun try_example() {
val str = "123"
var a: Int? = try {
str.toInt()
} catch (e: NumberFormatException) {
-1
}
}