2

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

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,一个接一个的不会使代码易于阅读。您将如何以更简洁的方式编写此内容?

4

1 回答 1

2

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 }
于 2015-12-27T19:45:33.187 回答