Swift : map, compactMap, flatMapの違い

公開日:2019-04-09
最終更新:2019-04-09

最近ようやくflatMapを使う機会に恵まれて、覚えたので備忘録に。

map

https://developer.apple.com/documentation/swift/sequence/3018373-map
基本形。値を変形して連結する。
例えば、数字の配列に全部5をかけて、配列にしなおす、的な。

let numbers = [1, 2, 3, 4]  
let mapped = numbers.map { $0 * 5 }  
// [5, 10, 15, 20]  

compactMap

https://developer.apple.com/documentation/swift/sequence/2950916-compactmap
nilを排除するmap。
値を変換しつつ、変換できなかったものを排除して配列を作る時に便利。

let values = ["1", "2", "3", "more"]  
let mapped = values.map { Int($0) }  
// [Optional(1), Optional(2), Optional(3), nil]   
// そもそも型が [Int?]  

let values = ["1", "2", "3", "more"]  
let compactMapped = values.compactMap { Int($0) }  
// [1, 2, 3]  

flatMap

https://developer.apple.com/documentation/swift/sequence/2905332-flatmap
mapの、一次元配列にする版。
map結果が二次元配列になってしまうが、一次元で扱いたい時に使う。

let numbers = [1, 2, 3, 4]  
let mapped = numbers.map { Array(repeating: $0, count: $0) }  
// [[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]  

let flatMapped = numbers.flatMap { Array(repeating: $0, count: $0) }  
// [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]  
記事が少しでもいいなと思ったらクラップを送ってみよう!
3
+1
日々のつまづきや失敗、発見を記録して生きたいのでござるよ。

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする