2016-04-13 14 views
0

Parametre ile türüne bağlı olarak, birkaç farklı türden bir diziyi döndürebilen bir işlev oluşturmak istiyorum. Twist, getiri değerlerini literal olarak belirtmek isterim. Bunu yapmanın bir yolu var mı bu gibi görünmelidir (bu veya benzer bir şey?): Belirli kod dönüş hattı üzerinde bu hatayı üretirSwift genel işlevinden dönen değerler döndürülüyor mu?

func values<T>() -> [T] { 
    switch T.self { 
     case is String.Type: 
      return ["A", "B", "C"] 
     default: 
      return [] 
    } 
} 

Yani: "türünde dönüş ifadesini dönüştürülemez '[Dize ] 'türkesine dönmek için' [T] '"

Umrumda olmamızın nedeni, bölümlerin bir enum öğesinin öğeleri olduğu sections değişkenine (veya işlevine) sahip genel bir görünüm denetleyicisi oluşturmaya çalışıyorum. Ancak, sınıfın parametrelenmiş olduğu türe bağlı olarak farklı enumları kullanmak istiyorum.

cevap

2

Sen tarif ettiğiniz aşırı yüklenme: Birçok durumda

func values() -> [String] { 
    return ["A", "B", "C"] 
} 

func values() -> [Int] { 
    return [1,2,3] 
} 

Ancak dönüş tipi aşırı yükleme çok fazla açık türlerini kullanmak zorunda çünkü çok sakıncalı olarak çıkıyor, ancak açıklama ile, bu should İyi çalışmak.

İlgili konular