when
- 기존 다른 언어에서 사용하던 switch문과 유사하다.
- JAVA의 default = Kotlin의 else
- 기존의 switch문과는 다르게 조건으로 일련의 범위를 줄 수 있음
- is Int~ else같이 타입의 일치 유무를 조건으로 줄 수 있음
- 따로 break를 해줄 필요없다.
- if문처럼 조건에 따른 결과를 변수에 저장 가능
Java
파라미터: int,char,문자열 리터럴(boolean타입X), 변수,연산식
case값: int,char,문자열 리터럴(true/false X), 변수X 연산식X
int value=5;
switch(value){
case 1: case2: System.out.println();
break;
case5: System.out.println();
break;
default: System.out.println();
}
Kotlin
파라미터 값: 기본타입,문자열 리터럴(boolean타입O),변수,연산식
조건식: 기본타입,문자열 리터럴(true/false O), 변수,연산식,범위
파라미터 없이 사용
val value2: Int = 4
when {
value2 == 1 -> println()
value == null -> println()
//value2 < 2 -> println()
//value2가 val타입이므로 값이 바뀔 수 없어서 절대 실행될 수 없는 코드라 에러
//var value2:Int=4 였으면 가능
else -> println() //else가 없다면? 아무 결과도 리턴X
}
null을 가질 수 있는 파라미터 사용
val value3: Int? = null
when (value3) {
null -> println()
else -> println()
}
val value5: Boolean? = null
when (value5) {
true -> println()
false -> println()
null->println() //조건으로 갖는 값의 모든 경우 대응 할 것, 생략해도 오류는 아닌데 대응하는 게 좋음
}
true, false를 리턴하는 when
val value9:Int=10
when(value9){
is Int->println("value9 is Int")
else->println("value9 is not Int")
}
변수의 값으로 사용(값을 리턴하는 when)
val value6: Boolean? = null
val returnval:Int = when (value6) {
true -> 1
false -> 2
else -> 3 //else없으면 오류, null을 가질 수 있는 Boolean타입이므로 모든 경우의 수 작성
// null -> 3 else대신 null인 경우로 해도됨
}
var value10=22
var result=when(10/3){
value10->true
in 5..20->false
5/2->false
else->true
}
val value6: Boolean= true
val returnval:Int = when (value6) {
true -> 1
false -> 2
}
if와 when을 사용하는 경우
- if : 범위가 넓고 값을 특정할 수 없을 경우
ex) 연도 데이터: 2019,2020,2021.... - when : 범위가 제한되고 값도 특정할 수 있는 경우
ex)요일 데이터:월,화,수,목,금,토,일
val day:String="월"
if(day=="월"){
...
}else if(day=="화"){
...
}else if(day=="수"){
...
}
when(day){
"월"->
"화"->
"목"->}
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin] invoke (0) | 2022.06.23 |
---|---|
[Kotlin] 생성자 (0) | 2022.06.23 |
[Kotlin] Unit (0) | 2022.06.17 |
[Kotlin] 기본형과 참조형 (0) | 2022.06.15 |
[Kotlin] Null Safety (0) | 2022.06.10 |