我有Container<T>
类型。我想添加一个扩展,如果T
是一个数组,函数可以应用于数组的每个元素。
类似的东西:
class Container<T> {
var item: T
init(item: T) {
self.item = item
}
}
extension Container where T: Array<Element> {
func mapElements<U>(transform: (Element) -> U ) -> Container<[U]> {
return Container(item.map(transform))
}
}
上面的代码当然没有编译:{{1}}
关于是否/如何实现这一点的任何想法?
答案 0 :(得分:0)
不是从Array
继承,而是将T
限制为从Sequence
继承。然后可以写下面的内容:
extension Container where T: Sequence {
func mapElements<U>(transform: (T.Element) -> U ) -> Container<[U]> {
return Container(item.map(transform))
}
}