下面的代码完成了这项工作。
var array:[[Int?]] = [[1,2,3,nil],[1,2,3,nil]]
var flattened = array.flatMap{$0}.flatMap{$0}
// flattened is of type [Int]
但是flatMap
如果find,一个接一个的不会使代码易于阅读。您将如何以更简洁的方式编写此内容?
flatMap<S : SequenceType>(transform: (Self.Generator.Element) throws -> S) rethrows -> [S.Generator.Element]
是map()
和的组合flatten()
:
s.flatMap(transform)
相当于
Array(s.map(transform).flatten())
您正在使用flatMap()
“身份转换”{ $0 }
来连接数组;这可以通过flatten()
直接使用来简化:
let flattened = array.flatten().flatMap { $0 }