web-dev-qa-db-ja.com

Swift 2-「if」でのパターンマッチング

最近、AppleからのWWDC 2015基調講演を見ました。また、いくつかのドキュメントを調べましたが、「ifでのパターンマッチング」セクションが見つかりませんでした。 ( Apple Events からの68分00秒のビデオ)

これが何を指しているのか知っていますか?または構文ですか?

32
Qbyte

それが本当に意味するのは、ステートメントがすでにswitchステートメントにあるようなパターンマッチングをサポートする場合です。たとえば、以下はif/else if/elseステートメントを使用して列挙型のケースを「切り替える」有効な方法です。

enum TestEnum {
    case One
    case Two
    case Three
}

let state = TestEnum.Three

if case .One = state {
    print("1")
} else if case .Two = state {
    print("2")
} else {
    print("3")
}

そして、以下はsomeIntegerが指定された範囲内にあるかどうかを確認する許容可能な方法です。

let someInteger = 42
if case 0...100 = someInteger {
    // ...
}

The Swift Programming Language のオプションパターンを使用したいくつかの例を次に示します。

let someOptional: Int? = 42
// Match using an enumeration case pattern
if case .Some(let x) = someOptional {
    print(x)
}

// Match using an optional pattern
if case let x? = someOptional {
    print(x)
}
63
Mick MacCallum