У меня есть array
из hash
значения:Уменьшает массив Рубиновых хэш
> taxes = [{:name=>"foo", :rate=>0.5}, {:name=>"bar", :rate=>2.5}]
=> [{:name=>"foo", :rate=>0.5}, {:name=>"bar", :rate=>2.5}]
Это работает подытожить ставки:
> taxes.reduce(0) {|sum,element|sum + element[:rate]}
=> 3.0
Есть еще один способ сделать это, что может быть более понятным и лаконично?
** редактировать **
Для сравнения (да, я понимаю, что это просто массив):
>> [1,2,3].reduce(:+)
=> 6
Что случилось с тем, что у вас есть? Вы хотите что-то более короткое? – Linuxios
Вам нравится 'tax.collect {| h | h [: rate]} .reduce (0,: +) # => 3.0'? –
Существует разница между непонятным текстом, и читатель просто незнаком с чем-то. Функциональная нотация не только очень красноречива, но может стать наиболее понятной нотацией, когда читатель знаком с функциональными понятиями. –