2016-07-24 17 views
4

In Swift, verstehe ich, dass "let" eine Konstante definiert. Kein Problem. So machen "let foo = 42" und "let foo: Int" Sinn. Aber ich sehe mehrere Fälle, in denen einfach "let foo" ohne Zuweisung oder Typangabe geschrieben wird. Zum Beispiel "case bar (let foo): ..."Swift: Fall foo (let bar): ohne einen Typ oder eine Zuordnung?

Was genau passiert, wenn "let foo" von sich aus in einem solchen Code ist?

+0

Können Sie Beispiel und ausführbares Beispiel zeigen? – Alexander

+0

Irgendwo im Code wird es eine Case-Deklaration wie 'case bar (Int)' geben –

Antwort

3

Diese Notation wird verwendet, um einen zugeordneten Wert einer Enumeration zu binden.

dies Nehmen Sie zum Beispiel:

let anOptionalInt: Int? = 15 

switch (anOptionalInt) { 
case .Some(let wrappedValue): 
    print(wrappedValue) 

case .None: 
    print("the optional is nil") 
} 

Dies funktioniert, weil Optional eine Aufzählung ist. Der erste Ausdruck kann geschrieben werden als:

let anOptionalInt: Optional<Int> = Optional.Some(15) 

Es gibt zwei Fälle: .Some und .None. In dem Fall .Some gibt es einen zugeordneten Wert, der Wrapped genannt wird, während der .None-Fall keinen zugeordneten Wert hat.

Tatsächlich ist Optional.None das gleiche wie nil.