Wie packt man Swift-Optionen aus?

8

Wie packt man normale und implizite Optionen richtig aus?

Es scheint Verwirrung in diesem Thema zu geben, und ich möchte nur eine Referenz für alle Wege und wie sie nützlich sind.

Es gibt derzeit zwei Möglichkeiten, um Optionen zu erstellen:

%Vor%

Was sind alle Möglichkeiten, beides auszupacken? Was ist der Unterschied zwischen der Verwendung von ! und ? beim Entpacken?

    
ktzhang 08.08.2014, 03:16
quelle

3 Antworten

28

Es gibt viele Ähnlichkeiten und nur eine Handvoll Unterschiede.

(reguläre) Optionals

  • Deklaration: var opt: Type?

  • Unsachgemäßes Auspacken: let x = opt!.property // error if opt is nil

  • Existenz sicher prüfen: if opt != nil { ... someFunc(opt!) ... } // no error

  • Sicheres Auspacken über Bindung: if let x = opt { ... someFunc(x) ... } // no error

  • Sicher verketten: var x = opt?.property // x is also Optional, by extension

  • Sicheres Zusammenführen von Nil-Werten: var x = opt ?? nonOpt

Implizit nicht abgewickelte Optionale

  • Deklaration: var opt: Type!

  • Unsauberes Auspacken (implizit): let x = opt.property // error if opt is nil

    • Unsicheres Auspacken über Zuweisung:
      let nonOpt: Type = opt // error if opt is nil

    • Unsauberes Auspacken über Parameterübergabe:
      func someFunc(nonOpt: Type) ... someFunc(opt) // error if opt is nil

  • Existenz sicher prüfen: if opt != nil { ... someFunc(opt) ... } // no error

  • Sicher verketten: var x = opt?.property // x is also Optional, by extension

  • Sicheres Zusammenführen von Nil-Werten: var x = opt ?? nonOpt

jtbandes 08.08.2014, 03:26
quelle
4

Seit Beta 5 haben wir auch den neuen Koaleszenzoperator (??):

%Vor%

Wenn das optionale ist! = nil wird es ausgepackt, sonst wird der Wert auf der rechten Seite des Operators verwendet

    
valfer 08.08.2014 05:55
quelle
1

Ein optionaler Typ bedeutet, dass die Variable null sein kann.

Beispiel:

%Vor%

Das Fragezeichen zeigt an, dass es möglicherweise keinen Wert hat.

Aber wenn Sie so sagen:

%Vor%

Es wird ein Fehler angezeigt.

Um den Wert abzurufen, müssen Sie ihn entpacken:

%Vor%

Aber wenn Sie automatisch auspacken möchten:

%Vor%

Dann:

%Vor%

Keine Notwendigkeit, auszupacken. Hoffe es wird helfen.

    
Raj Aryan 25.01.2018 10:15
quelle

Tags und Links