2014-06-05 17 views
9

我覺得var value: T = nil在下面,因爲的XCode不能nil值轉換爲通用型T.導致錯誤分配`nil`值的一般類型的變量在斯威夫特

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

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

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

錯誤信息讀取

找不到接受所供給的 參數「_coversion」過載

有沒有辦法將nil賦值給Swift中的變量?

回答

20

您需要聲明變量作爲可選:

var value: T? = nil 

遺憾的是目前這似乎觸發一個未實現的編譯器特性:用一個類型約束聲明牛逼

error: unimplemented IR generation feature non-fixed class layout 

你可以解決它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

哦,另一個限制? – Sulthan

+0

在操場上,這不會產生錯誤。也許它已經更新了:var value:T? =無 – Kokodoko

0

嘗試使用

var value: T? = nil 

問號使得變量的可選的,這意味着它可以有一個值或爲零。