본문 바로가기
모바일/Kotlin

[Kotlin] 코틀린 제어흐름(2) - when 구문

by drCode 2021. 3. 30.
728x90
반응형

안녕하세요

 

이번 포스팅은 코틀린에서 제어흐름 두번째인 when에 대해 알아보도록 하겠습니다.

 

보통 C, C++, Java를 배우면 if문 다음에 switch를 배우게 되는데 

 

코틀린은 when이라는게 있더라구요

 

사용 방법을 보도록 하겠습니다 

 

val value : Int = 3

// when에 들어가는 조건은 boolean 타입이 아니어도 when구문은 실행이 됩니다.

when(value) {
    1 -> println("value is 1")
    2 -> println("value is 2")
    3 -> println("value is 3")
    else -> println("I do not know value")
}

 

 

value의 값이 1이면 "value is 1"을, value 값이 3이면 "value is 3"을 출력하는 구조입니다.

 

위 구문은 if문으로 바꾸면 아래와 같습니다.

if(value == 1) println("value is 1")
else if( value == 2) println("value is 2")
else if(value == 3) println("value is 3")
else println("I do not know value")

 

값을 초기화하는데 when을 사용할수도 있습니다.

 

val value2 = when(value) {
	1 -> 10
	2 -> 20
	3 -> 30
	else -> 100
}

println(value2)

 

이렇게 when 구문을 이용하여 값을 초기화 할 수 있습니다.

 

 

when에 null이 들어가는 경우도 있습니다.

val value : Int ? = null

이럴 경우에는 when절에서는 null -> {} 에 대해 처리를 해주는 구문이 있어야 합니다.

 

when(value) {
	null -> println("value is null")
	else -> println("Value is not null")
}

 

변수 타입이 Boolean 타입인데, null이 들어가면 변수 값은 false가 될까?

 

그건 아닙니다. 변수가 null이 들어갈 수 있으면 true, false, null 이 세가지의 경우를 갖게 됩니다.

 

val value2: Boolean? = null

// when 구문은 조건으로 갖는 값의 모든 경우에 대응해주는 것이 좋다.
when(value2) {
	true -> println("")
	false -> println("")
	null -> println("")
}

 

값을 리턴해야하는 when 구문의 경우에는 반드시 값을 리턴해야합니다.

val value3 = when(value2) {
	true -> 1
	false -> 3
	else -> 4
}

 

when 구문 안에서 변수가 어떤 타입인지 확인하는 방법이 있습니다.

when(value) {

    is Int -> {}

}

 

이러한 방식으로 사용하면 됩니다.

 

val value4 : Int = 10
when(value4) {
	is Int -> {
		println("value4 is int")
	}
	else -> {
		println("value4 is not int")
	}
}

 

when구문에서는 in을 사용하여 m과 n 사이에 값이 존재하는지 확인할 수 있습니다.

val value5 : Int = 70
when(value5) {
	in 60 .. 70 -> {
		println("value is in 60-70")
	}
	in 70..80 -> {
		println("value is in 70-80")
	}
	in 80..90 -> {
		println("value is in 80-90")
	}
}
728x90
반응형

'모바일 > Kotlin' 카테고리의 다른 글

[Kotlin] 코틀린 Collection(List, Set, Map)  (0) 2021.03.30
[Kotlin] 코틀린 배열  (0) 2021.03.30
[Kotlin] 코틀린 제어흐름(1)  (0) 2021.03.28
[Kotlin] 코틀린 연산자  (0) 2021.03.28
[Kotlin] 코틀린 메서드(함수)  (0) 2021.03.28

댓글