Array<T> 扩展以过滤和解包选项
Array<T> extension to filter and unwrap optionals
我正在尝试筛选出可选数组并将它们解包。
所以我对 Array 结构写了以下扩展,但出现错误: 'T' is not a subtype of 'UInt8'
知道 swift 是否可行吗?
extension Array {
func filterOptionals() -> [T] {
return filter({[=11=] != nil }).map({[=11=]!})
}
}
数组可以包含任何类型的元素,不一定是'Optional<T>'
。目前不可能,而且可能永远不会编写通用类型的专门扩展。我们必须改用全局函数:
func filterOptionals<T>(array: [T?]) -> [T] {
return array.filter {[=10=] != nil } .map {[=10=]!}
}
是的,这是可能的。方法如下:
extension Array {
func catOptionals<A>() -> [A] where Element == A? {
return self.flatMap{ [=10=] }
}
}
我正在尝试筛选出可选数组并将它们解包。 所以我对 Array 结构写了以下扩展,但出现错误: 'T' is not a subtype of 'UInt8'
知道 swift 是否可行吗?
extension Array {
func filterOptionals() -> [T] {
return filter({[=11=] != nil }).map({[=11=]!})
}
}
数组可以包含任何类型的元素,不一定是'Optional<T>'
。目前不可能,而且可能永远不会编写通用类型的专门扩展。我们必须改用全局函数:
func filterOptionals<T>(array: [T?]) -> [T] {
return array.filter {[=10=] != nil } .map {[=10=]!}
}
是的,这是可能的。方法如下:
extension Array {
func catOptionals<A>() -> [A] where Element == A? {
return self.flatMap{ [=10=] }
}
}