【Swift入門】reduceの使い方を分かりやすく解説!

Swiftには配列の要素をまとめて計算したいときに便利な機能があります。

この記事では、

・reduceとは
・reduceの基本的な使い方
・reduceの中では何が行われているか?

というreduceの基本的な解説から、

・クロージャを引数に指定する方法
・型・return・引数を省略する方法

などの応用的な使い方に関しても解説していきます。

今回はそんなreduceの使い方についてわかりやすく解説します!

※この記事ではSwift4.0を使用しています。

reduceとは

reduceとは、配列の全要素の値を計算して合計を求めたいときなどに使用します。

reduceは以下のように記述します。

書き方:

reduceの引数には初期値を指定します。

$0は指定した初期値と$1を{}で計算した結果で、$1には配列の要素を順番に取り出した値が入ります。

他のプログラミング言語ではreduceのような処理はあまり見かけませんので、使い方のイメージが湧きにくいと思います。

次項ではreduceの使い方について詳しく解説していきます!

reduceの使い方

ここではサンプルを交えてreduceの使いかたを見ていきましょう。

基本的な使い方

reduceは前述したとおり、初期値で指定した値を元に配列の全ての要素を計算するときに使用します。

以下にreduceを使用して配列の合計を求めるサンプルを紹介します。

サンプルプログラム


実行結果:

上記のサンプルプログラムでは、まずreduceの引数に0を指定しています。

次に変数num1には初期値で指定した値とnum2で計算した結果が格納され、変数2には配列の要素が順番に格納されます。

合計を求める変数sumの値を出力すると、配列の全要素の合計値が取得されていることがわかりますね。

reduceの中では何が行われている?

ここまでの解説で、まだreduceの仕組みにピンと来ない方もいるのではないでしょうか?

reduceの処理は{}の中でfor文のように要素を1つずつ計算しているイメージになります。

先ほど紹介したサンプルプログラムを以下のようにすると、reduceの処理のイメージが掴みやすいと思います。

サンプルプログラム:

実行結果:

上記のようにreduceの処理中で変数を出力してみると、処理ごとに値が加算されていることがわかりますね!

この処理をfor文で実行すると、以下のようになります。

サンプルプログラム:

実行結果:

for文の場合では、最初にsumに0を代入する処理がreduce(0)となります。

for文の中ではreduceと同様に要素ごとに値が計算され、最終的に配列の要素分の合計を取得することができます。

for文については以下の記事で詳しく解説していますので、参考にしてください!

reduceのさまざまな使い方

ここではreduceのさまざまな使い方を見ていきましょう。

クロージャを引数を指定

配列の定義とreduceを同時に行い、reduceの引数にクロージャとして指定することも可能です。

reduceの引数にクロージャを指定:

クロージャについては以下の記事で詳しく解説していますので参考にしてください!

型・戻り値・引数の省略

reduceで指定する引数の型は省略することも可能です。

引数の省略:

returnを省略することも可能です。

returnの省略:

まとめ

ここではreduceについて、

・reduceとは
・reduceの基本的な使い方
・reduceの中では何が行われているか?
・クロージャを引数に指定する方法
・型・return・引数を省略する方法

などについて解説しました。

reduceを使えば、配列の合計などの計算が簡単に行えますので、使い方についてはよく覚えておきましょう。

もし、reduceの使い方を忘れてしまったら、この記事を思い出してくださいね。

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説