在双维数组中展平和展开可选值

Flatten and unwrap optionals in Double dimensional array

下面的代码可以完成这项工作。

var array:[[Int?]] = [[1,2,3,nil],[1,2,3,nil]]
var flattened = array.flatMap{[=10=]}.flatMap{[=10=]}
// flattened is of type [Int] 

但是两个 flatMap 一个接一个并不能使代码在找到时易于阅读。您将如何以更简洁的方式编写此代码?

flatMap<S : SequenceType>(transform: (Self.Generator.Element) throws -> S) rethrows -> [S.Generator.Element]map()flatten() 的组合:

s.flatMap(transform)
is equivalent to
Array(s.map(transform).flatten())

您正在使用 flatMap() 和 "identity transform" { [=17=] } 连接数组;这可以简化 直接使用 flatten()

let flattened = array.flatten().flatMap { [=10=] }