суммирование чисел в хэше в рубине - PullRequest
8 голосов
/ 27 февраля 2012

У меня есть такой хеш.

products = {199 =>['Shoes', 59.99], 211 =>['Shirts', 19.99], 245 =>['Hats', 25.99], 689 => ['Coats', 99.99], 712 => ['Beanies', 6.99]}

У него есть номер элемента => [product, price].

Я бы хотел суммировать все цены без использования метода ввода.

Кто-нибудь может мне помочь, пожалуйста?

Ответы [ 4 ]

16 голосов
/ 27 февраля 2012
products.values.map(&:last).reduce(:+) #=> 212.95
5 голосов
/ 27 февраля 2012

Почему без использования инъекции?Впрыск - это именно то, что вам нужно.

products.inject(0) { |total, (k, v)| total + v.last }

Конечно, вы можете использовать более процедурное решение, но почему?

1 голос
/ 27 февраля 2012
sum = 0
products.each { |key, value| sum += value.last }
0 голосов
/ 27 февраля 2012

Это должно работать в любой версии Ruby с использованием только встроенных функций:

products.values.map(&:last).reduce(&:+) # => 212.95
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...