Alles, was es wirklich bedeutet, ist, dass wenn Anweisungen nun Mustervergleich wie Switch-Anweisungen bereits unterstützen. Zum Beispiel ist das Folgende jetzt ein gültiger Weg, if/else if/else-Anweisungen zu verwenden, um die Fälle einer enum zu "wechseln".
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")
}
und Folgendes wird nun eine akzeptable Art und Weise der Überprüfung, ob someInteger
innerhalb eines bestimmten Bereichs liegt.
let someInteger = 42
if case 0...100 = someInteger {
// ...
}
Hier sind ein paar Beispiele, die die optionale Muster von 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)
}
Und die letzten beiden Aussagen sind mit - wenn ich es richtig verstanden habe - das entspricht dem bekannten 'wenn wir x = someOptional {} '. –
Das ist eine aufregende Aussicht, darauf habe ich gewartet, seit Swift herauskam. – cjnevin
@MartinR Ja, sie sind, die Sie wundern können, warum das optionale Muster nützlich sein kann, anstatt die optionale Bindungssyntax 'if let x = someOptional' zu verwenden. In der Tat ist das nicht sehr nützlich, wenn es in einfachen 'if'-Anweisungen wie hier verwendet wird, aber nützlicher für' for' oder 'while'-Schleifen (wie' für case let x? In arrayOfOptionalInt', das nur auf Nicht-Null-Werten im array), oder für komplexere 'if'-Anweisungen wie' if case let (x ?, y?) in someFuncThatReturnsATupleOfOptional() ', die nur dann true ist, wenn beide Elemente im Tupel nicht-nil sind und dann sowohl x als auch y binden gleichzeitig. – AliSoftware