21
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swiftにおけるreduceの使い方

Last updated at Posted at 2019-05-26

#使いどころ

配列内の要素の合計値を求めるときなどに使います(実際のプロジェクトでreduceを見かけるのはほとんどこのパターンな気がします)。

では要素内の合計値の求め方を例にreduceの処理の流れを見ていきます。

reduce.swift
let array = [1, 2, 3, 4, 5]
let result = array.reduce(0) { $0 + $1 }
print(result) // 15

reduceでは{ }の中身の処理が要素の数だけ繰り返されます。

###1周目
まず1周目ですが、$0にはreduce呼び出しの第一引数で指定した0が代入されます。一方、$1には配列の要素が順番に代入されていくので、この1周目では1が代入されます。したがって、{ }の中では0 + 1の結果である1が得られます。

###2周目
1周目の結果として得られた1が、2周目の$0に代入されます。つまり2周目以降は、前回の周で得られた結果が$0に代入されることになります。そして、$1は配列の要素が順番に代入されるので、今回は配列の2つ目の要素である2が代入されます。よって、1 + 2の計算が行われ、3が得られます。

###3周目
あとはこれの繰り返しになります。2周目の結果として得られた3が3周目の$0に、そして配列の要素の3番目である3$1に代入されます。3 + 36が結果として得られます。

###4周目
6 + 410になります。

###5周目
10 + 515になります。そして、これで配列にあるすべての要素の処理が終わったので、resultには15が代入されます。

##最後に
今回は例として{ }の中で足し算の処理をしましたが、他には掛け算、あるいは文字列の結合などにも使えます。いずれにしても上記の処理の流れがわかっていれば応用が効く思うのでいろいろ試してみてください。

##ちなみに
僕は新しく知ったことを実際にコードで確かめたい時にはpaiza.ioをよく使っています。ちょっとしたアウトプットをするときなどに重宝しています。

21
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?