LoginSignup
2
0

More than 1 year has passed since last update.

injectメソッド

Posted at

rubyシルバーを勉強していくなかで、injectメソッドについてわかったなかったので、解説していこうとおもいます。

injectメソッドとは

injectメソッドとは、たたみこみ演算を行うメソッドです。
詳細は、公式ドキュメントを参照してください。
言葉で説明するのは、むずかしいのですが、具体例で見てみると分かるとおもいます。

#合計を求める
1から6までをそれぞれ足していく。
p [1, 2, 3, 4, 5, 6].inject {|int, num| int + num }
=>21


#1から6までをそれぞれ掛けていく
p [1, 2, 3, 4, 5, 6].inject {|int, num| int * num }
=>720

また、初期値を入れることもできます。先ほどのコードでいえば、

p [2, 3, 4, 5].inject(0){|result, item| result + item } 
=> 14

p [2, 3, 4, 5].inject(10){|result, item| result + item } 
=> 24

もうちょい分かりやすく書きたい

p [1, 2, 3, 4, 5, 6].inject(:+)
p [1, 2, 3, 4, 5, 6].inject(:*)

上の書き方で、書いても同じような結果がでてきます。
シンボルで書くとスッキリしますね!

実際に問題を解いてみましょう

image.png

選択肢➀

この選択肢は、今回の記事を読んでいけば分かるとおもいます。
aとbの変数に格納されている配列の要素を、順次足していってるんです。
そうすると、この選択肢は、30以上にはならないので、この選択肢は不正解です。

選択肢➁

「|」は集合の和演算を表しています。+までの左辺は、[-1, 2, 3, 4, 5, 6]に対して、順次「-」が適用されていき、それに絶対値を当てます。
「&」は共通した値を取得します。+以降は、[4, 5]に順次「+」が適用されていきます

この計算結果は、30になるのでこの選択肢が正解になります。

選択肢➂

ここまで読んだ方でしたら、特別解説はいらないとおもいます。**3は3乗の意味ですね。この選択肢は不正解です。

選択肢➃

||と&&の使い方は、以下の記事を参考にしてみてください。

succメソッドは、次の整数をとるメソッドです。
たとえば、

1.succ
=> 2

こういうふうに、次の整数をとれるメソッドです。

この選択肢では、29となるので、この選択肢は不正解です。

以上です。
何か間違いがございましたら、ご教示いただけますと幸いです。

【参考文献】

2
0
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
2
0