文字っぽいの。

文字を書いています。写真も混ざります。

Swift 4.1 で多重配列を Flatten する。

環境

  • Swift version 4.1.2
  • Xcode 9.4.1

背景

※この記事は Sequence.flatMap を使って多重配列をFlattenしていた人向けの記事です。

Swift4.1になってから Sequence.flatMap がDeprecatedになり、かわりに mapcompactMap を使うようになりました。これらの使い方や導入経緯はこちらが詳しいです。

qiita.com

さて、 .flatMap { $0 } を使ってFlattenをしていた人からすると、多重配列をFlattenする方法がなくなってしまいました。

解決策

joined() を使えば良いです。

let multiDimensionalArray: [[Int]] = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
let joinedArray = Array(multiDimensionalArray.joined())
print(joinedArray) // => [1, 2, 3, 4, 5, 6, 7, 8, 9]

よかったですね。

備考

Swift3で flatten()joined() になっていたらしい。知らんかった。

github.com