수색…


비고

자바의 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 ->   // ...
    }
}

두 번째 사례 라인 ( MondayTuedsay )에서 볼 수 있듯이 둘 이상의 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 에 대한 자세한 내용은 여기 를 확인 하십시오.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow