📑
Swift 学習してなかった配列のシーケンス操作について勉強したら早めに知っておけば良かったって後悔した
はじめに
配列操作について下記記事が参考になりました。
いわゆるインデックスで指定番目の値を取り出すことや、要素数を数えるcount
などがあります。
その中の応用でシーケンス操作
というものがあります。
こちらについて勉強不足で使ってきませんでしたが、コードが短く書ける利点などあり、割と使う場面がありそうで良いと思ったので今回勉強して良かったです。
filterについて
聡明な皆さんであればコード見た方が速そうです。
条件を満たすものだけを取り出し、新しい配列を作ることができる。(引用)
let list = [1,2,3,4,5,6,7,8,9,10]
let filtedlist = list.filter {
$0 % 2 == 0
}
// 結果:[2, 4, 6, 8, 10]
mapについて
配列の各要素に指定した処理を適応させ、その結果からなる新しい配列を作成することができる。(引用)
let list = [1,2,3,4,5,6,7,8,9,10]
let filtedlist = list.map {
$0 + 1
}
// 結果:[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
reduceについて
シーケンスに含まれる要素を一つずつ全て使って処理を行い、その結果として一つの値を返します。 (引用)
let list = [1,2,3,4,5,6,7,8,9,10]
let filtedlist = list.reduce(0) {
$0 + $1
}
// 結果:55
補足ですが、.reduce(0)
の(0)
は一番最初の$0
にセットされる値です。
なので最初の計算は0+0
→0+1
→1+2
→3+3
というふうに処理されていきます。
補足
ちなみにシーケンス操作を複合することも可能です。
let list = [1,2,3,4,5,6,7,8,9,10]
let filtedlist = list.map{
$0 * 100
}.filter {
$0 % 3 == 0
}
print(filtedlist)
// 結果:[300, 600, 900]
Discussion