記載されている内容は2019年04月10日時点のものです。現在の情報と異なる可能性がありますので、ご了承ください。記事に記載されている情報は自己責任でご活用いただき、本記事の内容に関する事項については、専門家等に相談するようにしてください。この記事では、Rubyのinjectメソッドについて解説しています。特殊な処理をするプログラムなので少し理解が難しいかもしれません。便利なメソッドなのでぜひ理解できるようにこの記事を活かしていただきたいと思います。シェアツイートはてブ目次Rubyのinjectメソッドとはinjectメソッドの基本的な使い方injectにシンボルを使って演算子を指定するhashに対してinjectを利用するinjectメソッドのまとめRubyのinjectメソッドとはhttps://www.ruby-lang.org/images/head...Rubyのinjectメソッドは、配列の各要素対しての処理を提供するメソッドです。Rubyの配列の各要素に対するメソッドといえば、mapメソッドやeachメソッドが代表的ですが、このinjectメソッドも同じように処理を行います。injectメソッドは、配列の各要素に対して、処理の結果を利用しながらループさせたい場合に利用するメソッドです。特殊な動作をするメソッドなので理解が難しいかもしれません。このメソッドを使えるようになると他のRubyメソッドで行っていた処理をスリムに記述することができます。それにより、可読性が上がりメンテナンス性の高いプログラムとすることにも繋がります。このinjectメソッドを理解して、よりよいRubyプログラムを書けるようになりましょう。injectメソッドの基本的な使い方injectメソッドの基本的な使い方について解説します。処理}というように記述します。配列要素3」、「前の処理の戻り値、配列要素4」・・・というように渡されていきます。この渡された「前の処理の戻り値」を用いて、要素ごとに処理をおこなっていきます。以下にサンプルコードを示します。shiro上記のコードは、配列要素を文字列に変換しています。処理のフローとしては、まずmemoに配列要素1の「'taro'」が渡され、itemに配列要素2の「'jiro'」が渡され、処理が行われます。jiro'」が渡され、itemには配列要素3の「'saburo'」が渡されます。shiro」という結果が得られます。初期値をinjectの引数の0で初期化してsumを算出するなお、injectメソッドには初期値を渡すことができます。処理}という書き方になります。こちらは初期値を設定する書き方です。この場合だと、最初の記憶変数に初期値が渡されます。配列要素2」・・・というように渡されていきます。これを用いて、数字要素配列のsumを算出するコードを書いてみます。#5050このコードの処理のフローとしては、まずsumに初期値の0が渡され、itemに配列要素1の「1」が渡され、処理が行われます。sumには処理の結果(ここでは1)が渡され、item配列要素2の「2」が渡されます。再度処理が行われます。これが配列要素100まで繰り返し行われることで、結果が返されます。このように、injectメソッドは初期値を利用して処理を行うこともできます。初期値を利用するかどうかは状況によりますが、初期値をうまく利用して正確なプログラムを記述できるようにしましょう。injectにシンボルを使って演算子を指定するinjectメソッドには、便利な機能があります。injectメソッドの引数に演算子を指定することで、配列要素全てに対してその演算子の処理を行わせることができるという機能です。この演算子はシンボル(頭に:を付ける書き方)で指定する必要があります。プログラム上では配列.inject(演算子シンボル)と指定します。処理の部分の記述は不要です。演算子シンボル)と指定すればOKです。以下の項で、injectと他のメソッドをそれぞれ使って、1〜100までの数値をもった配列に対してその要素全てを足す処理を考えていきます。injectメソッドの便利な点を理解していきましょう。eachで書く方法まずは、eachで記述する方法を紹介します。サンプルコードを示します。表示」が行われています。array配列の各要素を加算するだけで4行の処理を書く必要があります。今回は単純な処理なので4行で済みますが、これが少し複雑な処理となってしまうと更に多くの行数がかかることになります。次に、injectメソッドを用いて1〜100までの要素を加算する処理を紹介します。前章でも同様の処理を行っていますが、今回は演算子シンボルを利用してさらにシンプルな記述になるようにします。以下にサンプルコードを示します。対し、初期値0で全ての要素を+演算子にて計算する」という処理が行われています。2行で配列要素の加算を表現することができました。このように、injectメソッドをうまく利用すると、配列に対する処理の記述量を減らし、よりシンプルなコードで表現することが可能になります。hashに対してinjectを利用するinjectメソッドは、hashに対しても処理をさせることが可能です。配列のときの使い方と異なるのは、{}内の第二引数にキー変数とバリュー変数の2つが渡されることです。hashに対してのinjectメソッドの場合の処理のフローは、まず「hashの一番上の要素」が記憶変数に渡され、「hashの二番目の要素」がそれぞれキーとバリューに分かれて変数に渡されます。次には記憶変数には「前の処理の結果」が渡され、「hashの3番目の要素」がそれぞれキーとバリューの変数に渡されます。初期値がある場合は、記憶変数に最初に渡されるのが初期値となり、hashの一番上の要素がキーとバリューに分かれて変数に渡されるようになります。以下にサンプルコードを示します。#210上記のサンプルは、hashのバリューの値をinjectを使って全て合計した値を返しています。このようにinjcetは、hashに対しても利用することが可能です。キーの方を扱うこともできます。japanese]上記のサンプルでは、バリューが60より大きい要素のキーを配列要素としてまとめた配列を返しています。injectメソッドの処理の中に条件分岐を含める場合は上記のように書けるので覚えておきましょう。上記のコードをeachを用いて書くと以下のようになります。japanese]処理が少し冗長になっているのがわかります。injectメソッドなど、配列をループして扱うRubyのメソッドを利用する際の処理ではより省略した演算子を利用するとスリムにプログラムを記述できます。以下に参考サイトを載せておくので参考にしてみましょう。演算子一覧injectメソッドのまとめこの記事では、Rubyのinjectメソッドの使い方について解説しました。特殊な動作をするメソッドなので理解するのが難しいかもしれませんが、使い方がわかるととても便利なメソッドなのでぜひ理解するようにしましょう。hashでのinjectの使い方についても解説しました。Rubyにおいてはhashでデータを保持することも多いので、hashに対してさまざまな処理をスムーズに行えるようになっておくのは必須スキルといえます。hashに対するinjectの使い方を理解して、よしなに処理を行えるようになっておきましょう。file.2:営業マンとして活躍し、海外留学。file.4:独学よりもスクールで。他人と同じことはしない。