次のコードはその仕事をします。
var array:[[Int?]] = [[1,2,3,nil],[1,2,3,nil]]
var flattened = array.flatMap{$0}.flatMap{$0}
// flattened is of type [Int]
しかし、次から次へと 2flatMap
つ続くと、見つかった場合にコードが読みやすくなりません。これをよりきれいな方法でどのように書きますか?
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 }