Gibt es eine Möglichkeit, eine Variable an mehrere Alternativen in einer switch-Anweisung zu binden?

8

Angenommen, ich habe eine enum-Definition wie folgt:

%Vor%

Dann bekomme ich eine solche Antwort:

%Vor%

Angenommen, ich möchte eine switch -Anweisung schreiben und auf die gleiche Weise wie in den Fällen "Result" und "Error" verfahren und eine Variable mit demselben Namen an die String binden, die sie enthält. Wie kann ich das machen? Konzeptionell etwas Ähnliches:

%Vor%

wo str zweimal gebunden ist und _ signalisiert, dass ich nicht am Int -Wert interessiert bin, den ein Result trägt.

Bis jetzt war das nächste, was ich finden konnte, eine Inline-Funktion wie folgt zu deklarieren und dann aufzurufen:

%Vor%

Gibt es einen besseren Weg?

    
Jean-Philippe Pellet 02.06.2014, 23:20
quelle

3 Antworten

3

Die Swift evolution Vorschlag SE-0043 , der angenommen wurde, hat dieses Problem mit Swift 3 behoben.

%Vor%

Mit Swift 2 würde der vorherige Playground-Code einen Fehler erzeugen: case labels with multiple patterns cannot declare variables . Mit Swift 3 erzeugt es jedoch keine Fehler und hat das erwartete Verhalten.

    
Imanou Petit 01.09.2016, 20:59
quelle
2

Nein, aber wenn Sie auf den String-Wert einer Antwort zugreifen möchten, unabhängig davon, ob es sich um ein .Result- oder ein .Error-Objekt handelt, können Sie dies tun:

%Vor%

Auf diese Weise behalten Sie die Logik für das Enum im Enum selbst.

    
kareman 20.06.2014 00:01
quelle
1

Der offensichtlichste Weg wäre, einen Fehler zu signalisieren, indem Sie optional anstelle der enum verwenden:

%Vor%

Sie können dies mit dem ursprünglichen Code kombinieren, wenn Sie darauf bestehen, eine enum -

zu haben %Vor%     
ilya n. 04.06.2014 23:01
quelle

Tags und Links