티스토리 뷰
반응형
if 문과 마찬가지로 많이 사용되는 또 하나의 제어문은 when 제어문입니다.
if 문과는 다르게, when 제어문에서는 소괄호 안의 조건절 자체의 결과값이 boolean(True/False) 일 필요가 없습니다.
코틀린에서 when을 어떻게 사용하는지 알아봅니다.
fun main(args: Array<String>) {
val value: Int = 3
when (value) {
1 -> {
println("value is 1")
}
2 -> {
println("value is 2")
}
3 -> {
println("value is 3")
}
else -> {
println("Unknown")
}
}
위에서 보듯이, 제어문 when을 사용시 조건절에는 value만 들어가 있습니다. 조건절 자체에서 True/False를 따질 필요가 없습니다.
그리고, value의 값이 1, 2, 3, else일 경우를 나누어서 처리하고 있는데, 이때 ->(Arrow)를 사용하여 각 경우의 수에 해당하는 결과를 연결시켜 줍니다.
위의 when 구문을 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("Unknown")
}
앞 전에 설명했듯이, when과 if문 모두 중괄호를 생략해서 축약할 수 있습니다. 축약한 모습은 다음과 같습니다.
반응형
when 제어문의 축약
when (value) {
1 -> println("value is 1")
2 -> println("value is 2")
3 -> println("value is 3")
else -> println("Unknown")
}
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("Unknown")
when 제어문 또한 값을 리턴하여 변수에 담을 수 있습니다.
val value2 = when (value) {
1 -> 10
2 -> 20
3 -> 30
else -> 100
}
println(value2)
위의 구문은 value의 값에 따라 10, 20, 30, 100을 리턴하여 value2의 변수에 저장하게 됩니다.
when 제어문을 사용할 때, if 제어문과 마찬가지로 모든 경우의 수에 대응하는 것이 좋습니다.
아래의 예시를 살펴봅니다.
val value: Int? = null
when (value) {
null -> println("value is null")
else -> println("unknown")
}
val value2: Boolean? = null
when(value2){
true -> println("this is true")
false -> println("this is false")
null -> println("this is null")
}
value2에서 boolean 값에 null이 들어간 경우입니다. 따라서 이후 when 제어문을 사용할 때, true, false 뿐만아니라 null 또는 else를 명시하면 좋습니다.
반응형
'Kotlin' 카테고리의 다른 글
is, in 연산자 (0) | 2021.07.06 |
---|---|
엘비스 연산자 Elvis Operator (0) | 2021.07.05 |
코틀린 제어문 Control Flows (0) | 2021.07.05 |
코틀린 연산자 Kotlin Operators (0) | 2021.07.05 |
코틀린에서의 함수/메소드 2편 Kotlin Function/Method (0) | 2021.07.05 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 2021년 사건사고
- 2019년 사건사고
- 안드로이드 어댑터
- 리사이클러뷰
- 리스트뷰
- bmi 계산기 만들기
- Bmi Calculator
- lazy init
- 인텐트
- 자바스크립트 배열
- ToDo List 앱 만들기
- android adapter
- 안드로이드 프로젝트
- 선형 레이아웃
- view binding
- 미제사건
- 대한민국 미제사건
- RecyclerView
- 안드로이드 스튜디오 에러
- 안드로이드 앱 만들기
- 뷰 바인딩
- tabLayout
- findViewById
- addView
- 탭레이아웃
- 상대적 레이아웃
- 2007년 사건사고
- notifyDataSetChanged
- 메소드 오버라이딩
- 애드뷰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함