2
我有一個鏈表一類聲明如下:如何擴展通用類型的數組?
class LinkedNode<T> {
let data: T
var next: LinkedNode<T>?
func traverseList(process: (LinkedNode<T>) ->()) { ... }
}
我想要做的是延長陣列有我的LinkedNode類轉換爲鏈接節點的數組的初始化器。我試過這個:
extension Array where Element == LinkedNode<T> {
init(node: LinkedNode<T>)
{
var result = [LinkedNode<T>]()
traverseList { result.append($0) }
return result
}
}
但是,這給出了T是未申報的錯誤。我試圖把它拿出來做其他事情,但沒有任何成效。
我能夠用在LinkedNode類的方法來得到相同的結果:
func array() -> [LinkedNode<T>]
{
var result = [LinkedNode<T>]()
traverseList { result.append($0) }
return result
}
但我寧願一個數組初始化器,因爲許多其他的集合類型有初始化器。
謝謝,就是這麼做的。而且你還證明你在初始化程序中執行self = result,而不是返回結果。 – MarkAurelius