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 に答える