2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

injectメソッド(たたみ込み演算)を理解する

Posted at

背景

  • 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を使おうと思います。

2
0
3

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?