記事の内容
この記事では、Rubyのinjectの使い方を紹介します。
injectはわかりづらいので、injectを使わない書き方も合わせて説明します。
最後に実行時間も計測するので、どちらのコードが効率的なのかもわかります。
また、reduceはinjectの別名です。
目次
injectとは何か?
injectはブロックを使用して繰り返し処理を行います。
この説明だけではわかりづらいと思うので、実際にコードを見ていきましょう。
配列の値の合計を出す
injectを使って、配列の数字の合計を出してみます。
内部で何が起きているかは、eachで置き換えたコードを見ると、わかりやすいはずです。
injectの基本的な書式は以下の通りです。
配列内にあるHashの、特定のkeyの合計を出す
特定のkeyの値だけを合計します。
配列の要素数をカウントして、出現数を出します
injectを使って、配列の要素数をカウントしてみます。
Hashにある配列をフィルタリング
Hashにある配列をフィルタリングしてみます。
find_allとmapを使う方法と、reduceを使う方法の2つを考えてみます。
2つの方法では、実行時間も変わってきます。
reduceを使う方が、実行時間は短くすみます。
ちなみに、このコードを実行する時は、どちらか一方のコードをコメントアウトして動かして下さい。
片方のコードが、もう一方に影響を与えることを防ぐためです。
まとめ
この記事では、injectの使い方を紹介しました。
用途に合わせて、上手くinjectメソッドを使って下さい。
Good luck for your engineer life!