[swift] Swift의 Exhaustive Switch 문에 대한 Noop

Swift에는 철저한 switch 문이 필요하며 각 케이스에는 실행 가능한 코드가 있어야합니다.

‘switch’의 ‘case’레이블에는 실행 가능한 문이 하나 이상 있어야합니다.

실제로 아무것도하고 싶지 않은 경우를 처리 할 수있는 좋은 방법을 결정한 사람이 있습니까? 거기에 println ()을 넣을 수는 있지만 더럽습니다.



답변

에 따르면 break거기 에서 사용해야 합니다.

각 케이스의 범위는 비워 둘 수 없습니다. 따라서 각 케이스 레이블의 콜론 (:) 뒤에 최소한 하나의 명령문을 포함해야합니다. break일치하는 케이스의 본문에서 코드를 실행하지 않으려면 단일 문을 사용하십시오 .


답변

break문을 사용할 수 있습니다 .

let vegetable = "red pepper"
var vegetableComment: String = "Nothing"
switch vegetable {
case "cucumber", "watercress":
    break // does nothing
case let x where x.hasSuffix("pepper"):
    vegetableComment = "Is it a spicy \(x)?"
default:
    vegetableComment = "Everything tastes good in soup."
}

문서 에서 수정 된 예


답변

다음은 null 문에 대한 한 가지 옵션이지만 좋은 솔루션이 아닐 수도 있습니다. 파이썬 패스와 같은 문을 찾을 수 없습니다.

{}()

스위치 케이스의 경우 휴식이 더 나은 선택입니다.

break


답변

내가 찾은 가장 깨끗한 해결책은 단순히 스위치 케이스에 마지막 진술을 기본값으로 포함하는 것입니다. 이렇게하면 break가능한 모든 경우를 처리하면서 추가 또는 기타 불필요한 문 을 추가 할 필요가 없습니다.

예를 들면 :

switch myVar {

case 0:
    myOtherVar = "Red"

case 1:
    myOtherVar = "Blue"

default:
    myOtherVar = "Green"

}


답변

break다른 답변에서 언급 한 것 외에도 ()no-op 문으로 사용되는 것을 보았습니다 .

switch 0 == 1 {
case true:
    break
case false:
    ()
}

혼란 스럽거나 3자를 저장하려는 ()경우 사용하십시오 break.


답변