我想要做的是:
extension Array<Optional<T>> {
func unwrap() -> Optional<Array<T>> {
let a = self.flatMap() { a in
switch a {
case Optional.Some(let x): return [x]
case Optional.None: return []
}
}
if a.count == self.count {
return Optional.Some(a)
} else {
return Optional.None
}
}
}
但是,它编译时出现错误使用未声明的类型T
。
这是我想要使用它的方式:
let a = [Optional.Some(2), Optional.Some(3), Optional.Some(4)]
let b = [Optional.Some(1), Optional.None]
a.unwrap() // Optional[2, 3, 4]
b.unwrap() // nil
我该如何解决这个问题?或者在Swift中不存在这种可能性吗?
extension Array<Optional<T>>
是非法和毫无意义的。你想做什么? - matt