2015-01-23 24 views
14

Swift'de bir Fonksiyon parametresi olarak bir Tür olarak geçmek mümkün mü? Not: Belirtilen türdeki bir nesneyi geçmek istemiyorum, bunun yerine Türün kendisini yazın. t türü olarak geçmek ediliyor, ama kendisi bu yüzden de bu tür karşı kontrol edebilirsiniz Tip geçmek istiyoruz TabiiSwift: Geçişin Parametre olarak yazılması

infix operator <-? { associativity left } 
func <-? <U,T>(x:U?, t:T) -> T? { 
    if let z = x as? t { 
     return z 
    } 
    } 
} 

: Örneğin, eğer Swift'in as? işlevselliğini çoğaltmak istedik işlev gövdesi.

cevap

18

Sen T.Type kullanabilirsiniz, ancak döküm zorunda tT olarak değil:

infix operator <-? { associativity left } 
func <-? <U,T>(x:U?, t:T.Type) -> T? { 
    if let z = x as? T { 
     return z 
    } 
    return nil 
} 

Numune kullanımı:

[1,2, 3] <-? NSArray.self // Prints {[1, 2, 3]} 
[1,2, 3] <-? NSDictionary.self // Prints nil 
+0

Ah, evet, yaptım. Teşekkürler! –