Swift: Hinzufügen von Optionalen Ints

8

Ich erkläre Folgendes:

%Vor%

und ich möchte eine dritte Variable z , die die Summe von x und y enthält. Vermutlich als x & amp; y sind Optionale, z müssen ebenfalls optional sein:

%Vor%

aber dies ergibt einen komplizierter Fehler "Wert des optionalen Typs 'Int?' nicht ausgepackt, wollten Sie '!' oder '?' "

Wenn ich x & amp; y :

%Vor%

Ich bekomme einen Laufzeitfehler als x & amp; y sind null und können daher nicht ausgepackt werden.

Ich kann das gewünschte Ergebnis wie folgt erreichen:

%Vor%

aber das scheint ein bisschen ausführlich für das Addieren von 2 ganzen Zahlen! Gibt es einen besseren Weg, dies zu erreichen?

    
Ashley Mills 27.06.2014, 13:04
quelle

5 Antworten

3

Hier ist meine Meinung, ich denke, es ist sauberer:

%Vor%

Mit Ergebnissen von:

%Vor%     
Chris Conover 13.07.2015, 23:06
quelle
3

Das Beste, was ich mir vorstellen kann, ist:

%Vor%

Da sie alle Optionals sind ... gibt es wirklich keine Möglichkeit zu vermeiden:

  1. überprüft, dass sie nicht nil
  2. sind
  3. Entpacke sie, bevor du sie hinzufügst.
Jack 27.06.2014 13:09
quelle
2

Es hängt genau davon ab, was Sie erreichen wollen, aber Sie könnten es mit einem optionalen Tupel machen:

%Vor%

Aktualisieren Wie @Jack Wu darauf hinweist, ändert dies die Semantik. Wenn du bereit wärst, ein bisschen wortreicher zu sein, könntest du es aber wie folgt machen:

%Vor%

Nicht sicher "+!" ist eine sinnvolle Wahl des Namens für den Operator, aber ich würde nicht "+?" wählen lassen.

    
Grimxn 27.06.2014 14:12
quelle
1

Beste Lösung IMO:

%Vor%

Wussten Sie den Kartenoperator auf Optional<T> ? Es ist sehr schön.

Dokumentation sagt:

  

Wenn self == nil, gibt nil zurück. Andernfalls wird f (self!) Zurückgegeben.

    
Fab1n 12.08.2016 09:18
quelle
-1

Verwenden Sie optionale Verkettung:

%Vor%     
David Berry 27.06.2014 14:44
quelle

Tags und Links