2

次のコードはその仕事をします。

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

しかし、次から次へと 2flatMapつ続くと、見つかった場合にコードが読みやすくなりません。これをよりきれいな方法でどのように書きますか?

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 に答える