Tutto ciò che significa veramente è che se le istruzioni ora supportano la corrispondenza del modello come già hanno le istruzioni switch. Ad esempio, il seguente è ora un modo valido di usare if/else if/else per "passare" ai casi di enum.
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")
}
Il seguente è ora un modo accettabile di verificare se someInteger
è entro un dato intervallo.
let someInteger = 42
if case 0...100 = someInteger {
// ...
}
Qui ci sono un paio di esempi che utilizzano il modello opzionale da 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)
}
fonte
2015-06-09 04:04:45
E le ultime due affermazioni sono - se ho ben capito - equivalente al noto 'se sia x = someOptional {} '. –
Questa è una prospettiva eccitante, l'ho aspettata da quando Swift è uscito. – cjnevin
@MartinR sì, lo sono, il che può farti chiedersi perché il modello opzionale può essere utile invece di usare la sintassi di associazione facoltativa 'if let x = someOptional'. In effetti questo non è molto utile se usato in semplici istruzioni 'if' come qui, ma più utile con i cicli' for' o 'while' (come' per caso x? In arrayOfOptionalInts' che scorre solo su valori non nulli nel array), o per istruzioni 'if' più complesse come' if case let (x ?, y?) in someFuncThatReturnsATupleOfOptionals() 'che sarà vero solo se entrambi gli elementi nella tupla sono non-nil e quindi eseguono entrambi x e y allo stesso tempo. – AliSoftware