在双维数组中展平和展开可选值
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=] }
下面的代码可以完成这项工作。
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=] }