2016-04-09 46 views
1

Ben Alamofire biraz araştırma yaptım ve bu kod bloğu geldi:Swift: "_, _" ne anlama geliyor?

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) 
} 

ne yapar _ _ demek öğrenebilir miyim?

let _ = "xyz" gibi kullanımlarını gördüm ama daha önce yukarıdaki kod gibi kullanıldığını görmedim.

Kullanılmayan 2 parametresi olduğu anlamına mı geliyor?

cevap

8

Evet bu temelde onlar kullanılmayan değerler demektir önceden

sayesinde Apples documentation burada açıklamak olduğunu.

Joker Kalıp bir kalıp ile eşleşir ve herhangi bir değeri yok sayar ve çizgi (_) oluşur

. Karşılaşılan değerleriyle ilgilenmediğinizde joker desen kullanın. Örneğin, döngünün her tekrarında aralığın geçerli değerini göz ardı kapalı aralık 1 ... 3 içinden Aşağıdaki kod dolaşır :

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

Bu switch deyimi vakaları üzerinde geçiş yapıyor bir Enum. .Success'daki önde gelen nokta, Success'un, Enum ne olursa olsun bu durumlardan biri olduğunu size söyler.

Swift Enums, Enum deposu verilerindeki durumları gösteren ilişkili değerleri (ilişkili Protokol değerleri ile karıştırılmamalıdır) kullanmanızı sağlar. Swift dokümanlar elde örneğin, standart bir bar kodu ve bir QR kodu kodlayan bir Barkod Enum sahiptir:

enum Barcode { 
    case UPCA(Int, Int, Int, Int) 
    case QRCode(String) 
} 

Bu UPCA barkodlar dört Orta değer verilir ve QR kodları, tek bir String değeri verilir belirtmekte okunabilir ve yazılabilir. Örneğin, var productBarcode = Barcode.UPCA(8, 85909, 51226, 3), .UPCA(8, 85909, 51226, 3) numaralı Barcode türünde bir nesne oluşturur; Enum'un tam adını (yalnızca önde gelen nokta) kullanmanız gerekmez, çünkü tür derleyici tarafından çıkarılabilir.

Bir Enum durumlarını değiştirirken, eşleşen davanın ilişkili tip değerlerini değişkenlere atayabilir ve ardından bu değişkenleri bu durumda blokta kullanabilirsiniz.

switch productBarcode { 
case let .UPCA(numberSystem, manufacturer, product, check): 
    print("UPC-A: \(numberSystem), \(manufacturer), \(product), \(check).") 
case let .QRCode(productCode): 
    print("QR code: \(productCode).") 
} 

productBarcode durum .UPCA ise, o zaman birinci durumda eşleşir ve bu değişkenlerin tahsis edilmektedir ve bu durum .QRCode olduğu benzer eğer.

Değişken atama listesinde bir alt çizgi, Swift'e bir değişkene atamak yerine oradaki değeri atmasını söyler. Kodunuzda, yalnızca ilişkili üç türden ilk değeri upload olarak adlandırılan sabite atar.

+1

Neye cevap veriyorsunuz? Soruyu düzgün okudun mu? –

+0

Cevabın sonucu _, _ anlamına gelir. Başlangıç, Enums ile deneyimsiz olanlar için bir bağlamdır ve sadece "değer atılır" dan ne olup bittiğine dair daha derinlemesine bir cevap verir. – BallpointBen

+0

Ama nerede söz konusu enum nedir? Soru "WildCard" hakkında. –