2016-04-09 11 views
1

ich tat etwas Forschung auf Alamofire und ich auf diesen Codeblock kam:Swift: Was bedeutet "_, _"?

switch encodingResult { 

    case .Success(let upload, _, _): 

    upload.responseJSON { response in 

     if let info = response.result.value as? Dictionary<String, AnyObject> { 

      if let links = info["links"] as? Dictionary<String, AnyObject> { 

       if let imgLink = links["image_link"] as? String { 

        print("LINK: \(imgLink)") 
       } 
      } 
     } 

    } case .Failure(let error): 
     print(error) 
} 

Darf ich wissen, was tut _, _ bedeutet?

Ich habe Anwendungen davon wie let _ = "xyz" gesehen, aber ich habe es noch nie wie den Code oben verwendet gesehen.

Bedeutet das, dass es 2 Parameter gibt, die nicht verwendet werden?

Vielen Dank im Voraus

Antwort

8

Ja, es bedeutet im Grunde, dass sie nicht verwendete Werte sind, ist es hier in Apples documentation beschreiben.

Wildcard Muster

Ein Platzhalter Muster übereinstimmt, und ignoriert beliebigen Wert und besteht aus einem Unterstrich (_). Verwenden Sie ein Platzhaltermuster, wenn Sie sich nicht um die Werte kümmern. Zum Beispiel können die folgenden Code iteriert durch den geschlossenen Bereich von 1 ... 3, den aktuellen Wert des Bereich bei jeder Iteration der Schleife zu ignorieren:

for _ in 1...3 { 
    // Do something three times. 
} 
0

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.

+1

Was antworten Sie? Hast du die Frage richtig gelesen? –

+0

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

+0

Aber wo ist das Enum in Frage? Die Frage bezieht sich auf "WildCard". –