Kann ich die optionale Bindung für mehrere Variablen in einer Zeile in Swift verwenden? Ich muss so etwas tun:
%Vor%Update für Swift 1.2:
Ab Swift 1.2 (Xcode 6.3 Beta) können Sie mehrere Optionen mit if let
:
Vor Swift 1.2
Sie können nicht mit if
, aber Sie können mit switch
mit " Wertbindungsmuster ":
Es ist ein wenig klobig, aber Sie können dies mit einem switch
für ein Tupel Ihrer Variablen tun:
Die Zeit, die ich damit verbringe, bohrt sich in ein verschachteltes Wörterbuch, wie ein großes JSON-Objekt - es ist großartig, weil Sie jeden Fehlerfall separat behandeln können:
%Vor%Vor Swift 1.2
Ich verwende gerne die switch
-Anweisung dafür, besonders wenn Sie die vier verschiedenen Fälle behandeln wollen.
Wenn Sie jedoch nur an dem Fall interessiert sind, in dem beide Optionen Some
sind, können Sie das auch tun:
Wo dies die Definition der Funktion unwrap
ist:
Weitere Überladungen: Ссылка
Das ist eine sehr vernünftige Verbesserungsanfrage, aber wie die Dinge stehen, können Sie es nicht tun. Es gibt verschiedene Gründe, aber die Art, wie ich daran denke, ist einfach die folgende: if let
ist wirklich ein Wort. Es sind zwei Wörter, aber die Kollokation if let
bedeutet etwas Besonderes, als wäre es selbst ein Schlüsselwort. Für sich genommen hat if
eine andere Bedeutung; an sich hat let
eine andere Bedeutung. Daher können Sie später keine separate let
in die Zeile einfügen.
Das Ergebnis ist, dass ich oft Kaskaden von verschachtelten if let
-Klauseln bekomme. Ich bin mir sicher, dass der Grund für Ihre Frage darin besteht, dass Sie das auch tun und es vermeiden möchten. Aber du kannst nicht. Eine Alternative besteht darin, die if let
ganz zu überspringen, die Optionals zu entfernen und zu hoffen, dass Sie nicht abstürzen, wenn einer von ihnen null ist.