수색…
비고
자바의 switch
와는 달리, when
문은 fall-through 동작을하지 않습니다. 즉, 분기가 일치하면 실행 후 제어 흐름이 반환되고 break
문이 필요하지 않습니다. 여러 인수에 bahaviors를 결합하려면 여러 인수를 쉼표로 구분하여 쓸 수 있습니다.
when (x) {
"foo", "bar" -> println("either foo or bar")
else -> println("didn't match anything")
}
표준 if 문
val str = "Hello!"
if (str.length == 0) {
print("The string is empty!")
} else if (str.length > 5) {
print("The string is short!")
} else {
print("The string is long!")
}
else-branches는 일반적인 if 문에서 선택적입니다.
표현식으로 If 문
if 문이 표현식이 될 수 있습니다.
val str = if (condition) "Condition met!" else "Condition not met!"
if
-statement가 표현식으로 사용되면 else
-branch는 선택적이 아님에 유의하십시오.
이것은 중괄호와 여러 개의 else if
문을 사용하여 여러 줄 변형을 사용하여 수행 할 수도 있습니다.
val str = if (condition1){
"Condition1 met!"
} else if (condition2) {
"Condition2 met!"
} else {
"Conditions not met!"
}
팁 : Kotlin은 변수 유형을 추측 할 수 있지만 유형에 대해 확실하게하려면 다음과 같은 변수에 주석을 달아 주어야합니다.
val str: String =
이 형식을 적용하고 읽기 쉽게 만듭니다.
if-else-if 체인 대신 when- 문
when 문은 여러 개의 else-if-branches가있는 if 문 대신 사용할 수 있습니다.
when {
str.length == 0 -> print("The string is empty!")
str.length > 5 -> print("The string is short!")
else -> print("The string is long!")
}
if-else-if 체인을 사용하여 작성된 동일한 코드 :
if (str.length == 0) {
print("The string is empty!")
} else if (str.length > 5) {
print("The string is short!")
} else {
print("The string is long!")
}
if 문과 마찬가지로 else 분기는 선택 사항이며 원하는만큼 분기를 추가 할 수 있습니다. 여러 줄을 가질 수도 있습니다 :
when {
condition -> {
doSomething()
doSomeMore()
}
else -> doSomethingElse()
}
when-statement 인수 매칭
인수가 주어지면 when
statement는 인수가 순서대로 분기와 일치합니다. 일치는 null 검사를 수행하고 equals
함수를 사용하여 피연산자를 비교하는 ==
연산자를 사용하여 수행됩니다. 첫 번째 일치하는 것이 실행됩니다.
when (x) {
"English" -> print("How are you?")
"German" -> print("Wie geht es dir?")
else -> print("I don't know that language yet :(")
}
when 문은 고급 일치 옵션도 제공합니다.
val names = listOf("John", "Sarah", "Tim", "Maggie")
when (x) {
in names -> print("I know that name!")
!in 1..10 -> print("Argument was not in the range from 1 to 10")
is String -> print(x.length) // Due to smart casting, you can use String-functions here
}
표현식으로서의 When 문
if와 같이 when을 표현식으로 사용할 수도 있습니다.
val greeting = when (x) {
"English" -> "How are you?"
"German" -> "Wie geht es dir?"
else -> "I don't know that language yet :("
}
print(greeting)
표현식으로 사용 되려면 when 문은 else 브랜치를 가지거나 다른 방법으로 브랜치를 사용하여 모든 가능성을 모두 포함해야합니다.
열거 형을 사용하는 when 문
when
일치하는 데 사용할 수있는 enum
값을 :
enum class Day {
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
fun doOnDay(day: Day) {
when(day) {
Day.Sunday -> // Do something
Day.Monday, Day.Tuesday -> // Do other thing
Day.Wednesday -> // ...
Day.Thursday -> // ...
Day.Friday -> // ...
Day.Saturday -> // ...
}
}
두 번째 사례 라인 ( Monday
및 Tuedsay
)에서 볼 수 있듯이 둘 이상의 enum
값을 결합 할 수도 있습니다.
귀하의 사례가 완전하지 않은 경우 컴파일시 오류가 표시됩니다. else
를 사용하여 기본 사례를 처리 할 수 있습니다.
fun doOnDay(day: Day) {
when(day) {
Day.Monday -> // Work
Day.Tuesday -> // Work hard
Day.Wednesday -> // ...
Day.Thursday -> //
Day.Friday -> //
else -> // Party on weekend
}
}
같은를 사용하여 수행 할 수 있지만 if-then-else
구성, when
실종을 담당 enum
값을하고 더 자연스러운 있습니다.
kotlin enum
에 대한 자세한 내용은 여기 를 확인 하십시오.