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(:*)
上の書き方で、書いても同じような結果がでてきます。
シンボルで書くとスッキリしますね!
##実際に問題を解いてみましょう
###選択肢➀
この選択肢は、今回の記事を読んでいけば分かるとおもいます。
aとbの変数に格納されている配列の要素を、順次足していってるんです。
そうすると、この選択肢は、30以上にはならないので、この選択肢は不正解です。
###選択肢➁
「|」は集合の和演算を表しています。+までの左辺は、[-1, 2, 3, 4, 5, 6]に対して、順次「-」が適用されていき、それに絶対値を当てます。
「&」は共通した値を取得します。+以降は、[4, 5]に順次「+」が適用されていきます
この計算結果は、30になるのでこの選択肢が正解になります。
###選択肢➂
ここまで読んだ方でしたら、特別解説はいらないとおもいます。**3は3乗の意味ですね。この選択肢は不正解です。
###選択肢➃
||と&&の使い方は、以下の記事を参考にしてみてください。
succメソッドは、次の整数をとるメソッドです。
たとえば、
1.succ
=> 2
こういうふうに、次の整数をとれるメソッドです。
この選択肢では、29となるので、この選択肢は不正解です。
以上です。
何か間違いがございましたら、ご教示いただけますと幸いです。
【参考文献】