1

我想从哈希数组中添加特定属性......这是一个示例数组:

@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

我究竟做错了什么?非常感谢(刚开始学习)

4

2 回答 2

2
@horses.collect {|h| h[:odds] }.inject(:+)
于 2012-10-14T20:39:54.940 回答
1

inject如果你需要解压你正在迭代的元素,你可以使用一个块:

@horses.inject(0) { |m, h| m + h[:odds] }

当你这样说时:

@total_odds = horses[:odds].inject(:+)

您正在尝试使用符号 ,:odds作为数组的索引;数组索引是整数,数组无法将符号转换为整数,因此会出现can't convert Symbol into Integer错误。

于 2012-10-14T21:12:58.777 回答