programing

Swift의 포괄적인 스위치 설명에 대한 Noop

lastmoon 2023. 8. 15. 11:25
반응형

Swift의 포괄적인 스위치 설명에 대한 Noop

Swift는 완전한 스위치 명령문과 각 케이스에 실행 코드가 있어야 합니다.

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

당신이 실제로 아무것도 하고 싶지 않은 사건들을 처리할 좋은 방법을 결정한 사람이 있습니까?거기에 인쇄물()을 넣을 수는 있지만, 그것은 더러운 느낌입니다.

책에 따르면, 당신은 사용할 필요가 있습니다.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."
}

문서에서 수정된 예제

완전한 스위치 케이스 문에서는 아무것도 수행하지 마십시오.

스위프트:

switch yourVariable {
case .someCase:
    break
}

Swift UI:

switch yourVariable {
case .someCase:
    EmptyView() // break does not work with ViewBuilder
}

Swift에서 중단 대신 EmptyView() 사용UI 보기는 오류를 방지합니다.

컨트롤 흐름 문이 포함된 폐쇄는 함수 작성기 ViewBuilder에서 사용할 수 없습니다.

EmptyView()는 Swift입니다.UI 표준 보기(Xcode 12, iOS 14로 테스트됨)는 직접 정의할 필요가 없습니다.

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

{}() 

스위치 케이스의 경우 브레이크가 더 나은 선택입니다.

break

에 더하여break다른 답변에서 언급된 바와 같이, 저는 또한 보았습니다.()no-op 문으로 사용:

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

사용하다()찾으시면break혼란스럽거나 3자를 저장하고 싶습니다.

기본 사례에 사용하는 깨끗한 솔루션은 다음과 같습니다.

default: ()

제가 찾은 가장 깨끗한 해결책은 단순히 스위치 케이스에 당신의 마지막 진술을 기본값으로 포함시키는 것입니다.따라서 추가할 필요가 없습니다.break또는 가능한 모든 사례를 다루면서 다른 불필요한 진술.

예:

switch myVar {

case 0:
    myOtherVar = "Red"

case 1:
    myOtherVar = "Blue"

default:
    myOtherVar = "Green"

}

특정 사례를 확인할 수 있습니다. 그럴 필요가 없습니다.exhustive와 함께switch cases

이와 같은 열거형이 있다고 가정하면,

enum Selection {
        case one
        case two
        case three
    }
var myCase = Selection.one
    

이렇게 확인할 수 있습니다.

    if case .one = myCase {
        print("one")
    }

언급URL : https://stackoverflow.com/questions/24141900/noop-for-swifts-exhaustive-switch-statements

반응형