我想从散列数组中添加特定属性...这是一个示例数组:
@horses = [
{name: "Runner1", odds: 4.00},
{name: "Runner2", odds: 20.00},
{name: "Runner3", odds: 4.00}
]
我正在尝试这种方法:
@total_odds = horses[:odds].inject(:+)
但我收到了一个错误:[ ]': can't convert Symbol into Integer
我做错了什么?非常感谢(刚刚开始学习)
答案 0 :(得分:2)
@horses.collect {|h| h[:odds] }.inject(:+)
答案 1 :(得分:1)
如果需要解压缩迭代的元素,可以使用inject
的块:
@horses.inject(0) { |m, h| m + h[:odds] }
当你这样说时:
@total_odds = horses[:odds].inject(:+)
您尝试使用符号:odds
作为数组的索引;数组索引是整数,并且数组无法将符号转换为整数,因此会出现can't convert Symbol into Integer
错误。