在双维数组中展平和展开选项

时间:2015-12-27 18:43:23

标签: swift optional flatmap

以下代码完成了这项工作。

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

但是,如果找到,则两个flatMap一个接一个地使代码不易读取。你会怎样以更清洁的方式写这个?

1 个答案:

答案 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 }
相关问题