Kotlin 에는 when이라는 조건문이 있습니다.
자바와 비교하면 switch문과 비슷합니다.
예제를 통해서 사용 방법을 알아보도록 하겠습니다.
자바 switch문으로 작성한 예제입니다.
public class test {
public static void fruit(String value) {
switch (value) {
case "사과":
System.out.println("Apple!");
break;
case "바나나":
System.out.println("Banana");
break;
default:
System.out.println(String.format("Unknown(%s)", value));
}
}
public static void main(String[] args) {
fruit("바나나");
fruit("포도");
fruit("사과");
}
}
결과
Banana
Unknown(포도)
Apple!
코틀린 when 조건문으로 작성을 해보겠습니다.
fun fruit(value: String) {
when(value) {
"사과" -> println("Apple!")
"바나나" -> println("Banana!")
else -> println("Unknown($value)")
}
}
fun main(args: Array<String>) {
fruit("바나나")
fruit("포도")
fruit("사과")
}
결과
Banana
Unknown(포도)
Apple!
switch 대신에 when을 사용하고, case 대신에 ->을 사용했습니다.
위 예제에서는 변수 value와 비교하는 조건식을 생략해서 작성했지만, when에서는 조건식과 같이 사용할 수도 있습니다.
when과 조건식 예제
fun fruit(value: String) {
when {
value == "사과" -> println("Apple!")
value == "바나나" -> println("Banana!")
else -> println("Unknown($value)")
}
}
fun main(args: Array<String>) {
fruit("바나나")
fruit("포도")
fruit("사과")
}
결과
Banana
Unknown(포도)
Apple!
결과는 동일합니다.
그리고 when은 식이기 때문에 값을 반환할 수도 있습니다.
when 결과값 반환 예제
fun fruit(value: String): String {
return when(value) {
"사과" -> "Apple!"
"바나나" -> "Banana!"
else -> "Unknown($value)"
}
}
fun main(args: Array<String>) {
val fruit1 = fruit("바나나")
val fruit2 = fruit("포도")
val fruit3 = fruit("사과")
println(fruit1)
println(fruit2)
println(fruit3)
}
결과
Banana
Unknown(포도)
Apple!
결과를 값으로 반환했습니다.
따로 결과값을 저장할 변수를 만들지 않아도 됩니다.
불필요한 처리를 하지 않아도 되기 때문에 소스도 깔끔하게 작성할 수 있습니다.
그리고 코틀린 when은 break를 작성하지 않아도 됩니다.
댓글