2014-06-05 5 views
9

bir jenerik yazılan değişkene `nil` değerin atanmasıBen <code>var value: T = nil</code> XCode genel tür T. <code>nil</code> değeri dönüştürmek olamaz çünkü aşağıda hataya neden olduğunu düşünüyorum Swift

class Node<T> { 
    var value: T = nil 
    var next: Node 

    init(value: T) { 
     self.value = value 
     self.next = Node() 
    } 

    init() { 
     self.next = Node() 
    } 
} 

hata mesajı

okur

verilen argümanları kabul '_coversion' için bir aşırı bulunamadı

Swift'de bir değişkene nil değeri atamanın bir yolu var mı?

cevap

20

Sen olarak isteğe bağlı değişken bildirmek gerekir NSObject:

class Node<T:NSObject> { 
    var value: T? = nil 
    var next: Node 

    init(value: T) { 
     self.value = value 
     self.next = Node() 
    } 

    init() { 
     self.next = Node() 
    } 
} 
+3

Oh, ANTİK bir sınırlama? – Sulthan

+0

Oyun alanında, bu bir hata oluşturmaz. Belki de güncellenir: var değer: T? = sıfır – Kokodoko

0

var value: T? = nil 

soru işareti kullanmayı deneyin bir değere sahip veya sıfır olabilir ya yani değişken isteğe bağlı hale getirir. Bir tür kısıtlaması ile T bildirerek

error: unimplemented IR generation feature non-fixed class layout 

Etrafında çalışabilirsiniz:

var value: T? = nil 

Ne yazık ki bu şu anda uygulanmamış derleyici özelliğini tetikler gözükmektedir: