【发布时间】:2018-03-19 12:02:40
【问题描述】:
我有一个这样声明的链表类:
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
}
但我更喜欢数组初始化器,因为许多其他集合类型都有该初始化器。
【问题讨论】:
标签: arrays swift generics swift4 initializer