Dieser Schalter Anweisung ist die Fälle der Umschaltung von einem Enum. Der führende Punkt in .Success
sagt Ihnen, dass Success
einer der Fälle von was Enum das ist.
Swift Enums ermöglichen die Verwendung von verknüpften Werten (nicht mit den zugehörigen Werten von Protocols zu verwechseln), die die Fälle eines Enum Daten speichern lassen. Das Beispiel die Swift docs geben ist ein Barcode-Enum, die einen Standard-Barcode und einen QR-Code codiert:
enum Barcode {
case UPCA(Int, Int, Int, Int)
case QRCode(String)
}
Dieses besagt, dass UPCA Barcodes gegeben vier Int Werte und QR-Codes sind gegeben einen einzelnen String-Wert, welches gelesen und geschrieben werden kann. Zum Beispiel erzeugt var productBarcode = Barcode.UPCA(8, 85909, 51226, 3)
ein Objekt des Typs Barcode
mit dem Wert .UPCA(8, 85909, 51226, 3)
; Sie benötigen nicht den vollständigen Namen der Enum (nur der führende Punkt), da der Typ vom Compiler abgeleitet werden kann.
Wenn Sie die Fälle einer Enum umschalten, können Sie die zugeordneten Typwerte des übereinstimmenden Falls den Variablen zuweisen und dann diese Variablen im Block für diesen Fall verwenden.
switch productBarcode {
case let .UPCA(numberSystem, manufacturer, product, check):
print("UPC-A: \(numberSystem), \(manufacturer), \(product), \(check).")
case let .QRCode(productCode):
print("QR code: \(productCode).")
}
Wenn productBarcode
Fall ist .UPCA
, dann paßt es den ersten Fall und diese Variablen sind entsprechend zugeordnet und in ähnlicher Weise, wenn es Fall .QRCode
.
Ein Unterstrich in der Variablenzuweisungsliste weist Swift einfach an, den Wert zu verwerfen, anstatt ihn einer Variablen zuzuweisen. Im Fall Ihres Codes weist er nur den ersten der drei zugeordneten Typwerte einer Konstanten mit dem Namen upload
zu.
Was antworten Sie? Hast du die Frage richtig gelesen? –
Die Schlussfolgerung der Antwort ist, was _, _ bedeutet. Der Anfang ist ein Kontext für unerfahrene Enums und gibt eine tiefere Antwort auf das, was vor sich geht, als nur "der Wert wird verworfen". – BallpointBen
Aber wo ist das Enum in Frage? Die Frage bezieht sich auf "WildCard". –