If

fun main(args: Array<String>) {
	val age = 30
	
	if (age < 40) {
			println("You are ${age} years old.")
	}
}

when

when {
	score > 90 -> println("A")
	score > 80 -> println("B")
	else -> println("C")
}

비교할 대상 파라미터를 전달하고, 해당 값을 비교할 수도 있다.

fun main(args: Array<String>) {
	checkWithWhen(15)
	checkWithWhen('B')
	checkWithWhen("Hello")
}

fun checkWithWhen(someValue: Any) {

	when(someValue) {
		in 10..20 -> println("C")
		in 'A'..'B' -> println("You got very good score.")
		else -> println("I don't know.")
	}
}

들어온 값 자체를 검사하는 경우에는 체크하고자 하는 값을 그대로 when 하위 검사식에 쓸 수 있다.

fun checkTypeWithWhen(someValue: Any) {
  when(someValue) {
    is String -> println("String. ${someValue}")
    is Int -> println("Int. ${someValue}")
    else -> println("I don't know.")
  }
}

// 결과
// String. A
// Int. 10