Ruby Silver 取得のため勉強しているのですが、
以下のコードを実行した際の出力結果が10になるのは何故でしょうか。
injectメソッドに初期値が省略されている場合は0ではないのでしょうか。
教えてください。
a = [4,3,2,1] b = a c = b.shift puts a.inject{|x,i| x * i} + c #=> 10
実行したこと
私が出した答えは4でした。
理由は、shiftメソッドにより、a,bともに[3,2,1]の配列になる。cには先頭要素となる4が代入される。
ブロック内ではレシーバと初期値0が処理されて、0+4となり、結果は4。
補足情報(FW/ツールのバージョンなど)
Ruby Silver取得なのでバージョンは2.1です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/25 10:47