불로구

[코틀린 기초] 10. when 조건문 본문

프로그래밍/코틀린

[코틀린 기초] 10. when 조건문

맹이맹이 2021. 2. 22. 07:57
반응형

When

- 함수처럼 인자가 있는 경우와 없는 경우의 따라 조건을 처리할 수 있다.

 

 if(a > b){
     println("zz")
 }else{
     println("ss")
 }

우리가 늘 사용하던 if~else문과 비슷하다고 볼 수 있다.

 

사용법을 알아보자

var a:Int = 1

for(i in 0 until 5 step 1) {
        when (a) {
            1 -> {
                println("value is 1")
            }

            2 -> println("value is 2")

            else -> {
                println("value is 3~n")
            }
        }
        a++;
    }

위 코드를 보면 a라는 Int타입 변수가 1로 초기화 되어있다.

for문을 통해 5번동안 a의 조건에 따라 값이 나오게 했다.

먼저 첫번째는 a가 1이기에 1 -> {}가 실행되고 a값이 증가한다.

두번째는 a가 2이므로  2->{}가 실행되고 a값이 3으로 증가한다.

이후에는 a가 3이되고 조건에 맞는것이 없기때문에 else ->{}를 실행한다.

 

Null을 허용했을 경우는 주의하자

    var result:Boolean? = null
    var result_Num = when(result){
        true -> 10
        false -> 20
        else -> 50
    }
    

result라는 Boolean 타입의 변수를 Null을 허용하게 선언했다.

그리고 result_Num이라는 변수에 result 조건에 따른 값을 대입하는 when 문을 만들었는데..

true -> {}, false -> {}만 작성한다면 null에 대한 처리가 없기때문에 에러가 발생한다.

그러므로 마지막 줄에 있는 else -> {} 또는 null -> {}을 통해 null에 대한 처리를 해줘야 한다.

 

when문은 다양하게 사용할 수 있다.

    when(result_Num){
        is Int -> println("인트타입")
        else -> println("다른 타입")
    }
    when(result_Num){
        in 10..20 -> println("10~20 사이 존재")
        in 40..60 -> println("40~60 사이 존재")
        else -> println("위치 모름")
    }

타입을 검사할때나, 숫자의 범위를 찾아낼때도 사요할 수 있으므로 많이 연습하도록 하자.

반응형
Comments