将红宝石中的数字相加

edd*_*ell 8 ruby

我有这样的哈希.

products = {199 =>['Shoes', 59.99], 211 =>['Shirts', 19.99], 245 =>['Hats', 25.99], 689 => ['Coats', 99.99], 712 => ['Beanies', 6.99]}
Run Code Online (Sandbox Code Playgroud)

它有一个项目编号=> [product, price].

我想在不使用注入方法的情况下总结所有价格.

有人可以帮我吗?

meg*_*gas 16

products.values.map(&:last).reduce(:+) #=> 212.95
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`reduce`与`inject`相同,所以这不会**按照OP的要求回答问题. (2认同)
  • 犯规动作!在不允许使用 `inject` 时使用 `reduce`。 (2认同)

d11*_*wtq 5

为什么不使用注入?注入正是您想要的.

products.inject(0) { |total, (k, v)| total + v.last }
Run Code Online (Sandbox Code Playgroud)

当然,您可以使用更具程序性的解决方案,但为什么呢?


Jam*_*mes 1

sum = 0
products.each { |key, value| sum += value.last }
Run Code Online (Sandbox Code Playgroud)