Subscribed unsubscribe Subscribe Subscribe

Arrayでinjectを使ってみるヘ(^o^)ノ

injectはとても便利( ˘ω˘)

[1, 2, 3].inject(:+)  #=> 6

こんな感じで読みやすくていい感じ

total_price = 90
total_price += [10, 20].inject(:+)  #=> 120

Railsのバリデーションとかで使うならこんな感じかな

# 以下の値を仮定
limit_total_price = 100
total_price = 100

if items.map(&:price).inject(total_price, :+)  > limit_total_price
  errors.add(:total_price, "over the limit")
end

# with ActiveSupport
if items.map(&:price).sum > limit_total_price
  errors.add(:total_price, "over the limit")
end

Happy Hacking٩( ‘ω’ )و

追記

  • 2015/07/25 JunichiItoさんのコメ反映♪ Thanks!