카테고리 없음

코틀린 if, when, Any 타입과 when으로 데이터 자료형 확인하기

slowbooktech 2022. 5. 13. 13:05

1. if

다른 언어들과 동일하다.

if ( 조건) {

 실행할 코드

}

else if ( a>b ) {

  println( a )

else { }

 

2. when

다른 언어들의 switch 와 유사하다.

 

when ( 기준값 ) {

특정 기준값 -> 실행코드

  in 여러 기준값 범위 -> 실행코드

  in 끝범위 downTo 시작범위 -> 실행코드

 else 남은 범위

}

package com.example.udemy3_operator_when

fun main(){
    var time = 1
    when (time){
        24, 1-> println("midnight")
        in 1..6 -> println("dawn")
        in 7..11 -> println("morning")
        in 23 downTo 9-> println("we should have launch, work and have dinner")
        else -> println("try to sleep")
    }
}

ㅣ코드 실행 결과

 time이 1, 7, 14 인 경우

왼쪽부터 time 이 1, 7, 14

3. any , type

when 에는 변수의 타입을 기준값으로 삼을 수 있는 boolean 형태의 문법이 있는데, is + 자료형이 바로 그것이다.

    var type : Any = 32
    when (type){
        is Int -> println("$type is an Integer number")
        !is Double-> println("$type is not an integer, and not a double number")
        else -> println("i have no idea")
    }

이때 type 이라는 개발자 지정 변수의 타입은 any 로 어떤 타입이든 가능했다가, 32를 넣음으로서 int 가 된다.

 

첫 줄에서 is Int 를 통해 정수형인지 물어봤고 맞으므로 바로 출력된다. 따라서 두번째에 double이 아닌 조건도 충족되지만 when 의 특성상 순차적으로 코듯가 실행되어 첫번째 조건으로 코드 실행이 끝나면 나머지 조건들은 검토하지 않아 if 와 동일한 속성을 보인다.

 

ㅣ 코드 실행 결과