[解決済み] インジェクト法の簡単な解説が必要
2022-03-06 20:26:53
質問
[1, 2, 3, 4].inject(0) { |result, element| result + element } # => 10
このコードを見ているのですが、私の脳みそでは、10という数字がどうして結果になるのかが認識できていないのです。どなたか説明していただけませんか?
どのように解決するのですか?
ブロックの最初の引数はアキュムレータと考えることができます。ブロックの各実行の結果はアキュムレータに格納され、ブロックの次の実行に渡されます。このブロックの各実行結果はアキュムレータに格納され、次のブロックの実行に渡されます。次のブロック呼び出しでは、この新しい値を取得し、それを加算して再び格納し、これを繰り返します。
この場合、配列のすべての値の合計、つまり10が返されます。
もうひとつ、文字列表現をキーとするオブジェクトの配列からハッシュを作成する簡単な例を紹介します。
[1,"a",Object.new,:hi].inject({}) do |hash, item|
hash[item.to_s] = item
hash
end
この場合、アキュムレータをデフォルトで空のハッシュにし、ブロックが実行されるたびにそれに値を入れています。ブロックの結果はアキュムレータに戻されるため、ブロックの最後の行としてハッシュを返さなければならないことに注意してください。
関連
-
[解決済み] nil:NilClass のための未定義のメソッド `+' (NoMethodError)
-
[解決済み] 配列をアルファベット順に並べるには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] シェル変数の周りに中括弧が必要なのはどんなとき?
-
[解決済み] Pythonの "at"(@)マークは何をするものですか?
-
[解決済み] SetをArrayに変換するには?
-
[解決済み] PythonにMultiline Lambdaはない。なぜダメなのか?
-
[解決済み】各「when」ブロックに複数の値を指定するCaseステートメント
-
[解決済み】Haskell/GHCの`forall`キーワードは何をするのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Rubyで新しい文字列を作成せずに文字列をトリミングする標準的な方法は何ですか?
-
[解決済み】rubyの1e18という数字は何を意味するのか?
-
[解決済み] Rubyのローカル変数が未定義である
-
[解決済み] Ruby Detect方式
-
[解決済み] レイルズ・ジェネレート」を逆手に取る方法
-
[解決済み] gemのインストール中に "permission denied "エラーが発生するのはなぜですか?
-
[解決済み] Rubyでfailキーワードは何をするのですか?
-
[解決済み] 動的な定数割り当て
-
ERRORの問題を解決します。rails のインストール時に gem ネイティブ拡張のビルドに失敗しました。
-
[解決済み] Rubyでガウス(正規分布)乱数を生成するコード