以下代码完成了这项工作。
var array:[[Int?]] = [[1,2,3,nil],[1,2,3,nil]]
var flattened = array.flatMap{$0}.flatMap{$0}
// flattened is of type [Int]
但是,如果找到,则两个flatMap
一个接一个地使代码不易读取。你会怎样以更清洁的方式写这个?
答案 0 :(得分: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()
使用&#34;身份转换&#34; { $0 }
连接数组;这可以简化
直接使用flatten()
:
let flattened = array.flatten().flatMap { $0 }