背景
- Railsで検索フォームを作っています
- お手本のコードに読み慣れないメソッドが多数だったので、勉強しながらノートにまとめてみました
▼環境
- Ruby 2.6.0
なお、この記事は以下の2つの記事を参考に学習したことをまとめたものです。
inject
メソッドとは
たたみ込み演算ができるメソッドです。
基本の構文は下記の通り。
配列.inject {|初期値, 要素| ブロック処理 }
具体的なコードにすると、こうなります。
[1, 2, 3, 4, 5].inject {|result, item| result + item }
# => 15
この時、以下の計算がされています。
1 + 2 + 3 + 4 + 5
初期値の設定
inject
には、初期値が設定できます。
[1, 2, 3, 4, 5].inject(6) {|result, item| result + item }
# => 21
この時、以下の計算がされています。
6 + 1 + 2 + 3 + 4 + 5
eachとの書き換え
inject
メソッドは、下記のようにeach
に書き換えることができます。
# これと
[1, 2, 3, 4, 5].inject(6) {|result, item| result + item }
# こちらの処理は同じ
result = 6
[1, 2, 3, 4, 5].each do |item|
result = result + item
end
result
上記の通り、injectを使うとコードがコンパクトになりますが、最初に紹介したこちらの記事でも言っている通り、
ただ、何をやっているのかは、eachメソッドの方がわかりやすいです。
injectになれてきたら、injectを書いていきましょう。
...ので、当面はeachを使おうと思います。