我正在尝试过滤掉一系列可选项并打开它们。 所以我写了以下扩展到Array结构但是我收到错误:'T'不是'UInt8'的子类型
任何想法是否可以使用swift?
extension Array {
func filterOptionals() -> [T] {
return filter({$0 != nil }).map({$0!})
}
}
答案 0 :(得分:0)
数组可以包含任何类型的元素,不一定是'Optional<T>'
。目前不可能,也可能永远不会编写泛型类型的专用扩展。我们必须使用全局函数:
func filterOptionals<T>(array: [T?]) -> [T] {
return array.filter {$0 != nil } .map {$0!}
}
答案 1 :(得分:0)
是的,有可能。方法如下:
extension Array {
func catOptionals<A>() -> [A] where Element == A? {
return self.flatMap{ $0 }
}
}