我有一个类如下所示的链表:
class LinkedNode<T> {
let data: T
var next: LinkedNode<T>?
func traverseList(process: (LinkedNode<T>) -> ()) { ... }
}
我想要做的是将Array扩展为具有将我的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
}
但我更喜欢数组初始化器,因为许多其他集合类型都有初始化器。
答案 0 :(得分:4)
您可以在初始化程序定义中声明泛型参数。
like %?1%