アプリ版:「スタンプのみでお礼する」機能のリリースについて

p [{:a=>'x',:b=>'X'},{:a=>'y',:b=>'Y'},{:a=>'z',:b=>'Z'}].inject(Hash.new(0)){|h,v| h[v[:a]]=v[:b]}
上記以下エラーになります。

test.rb:1:in `[]=': string not matched (IndexError)
from test.rb:1
from test.rb:1:in `inject'
from test.rb:1:in `each'
from test.rb:1:in `inject'
from test.rb:1

以下のような、ハッシュを作りたいのですが、
{'x'=>'X',y'=>'Y',z'=>'Z'}

何がダメですか?

ご教授の程、お願いいたします。

A 回答 (1件)

injectはブロックの結果つまりv[:b]が、次のhになります。

それは意図と違いますよね。

~.inject(Hash.new(0)){|h,v| h[v[:a]]=v[:b]; h}

と、ブロックの結果が h になるようにしてください。
    • good
    • 0
この回答へのお礼

有難うございました。

お礼日時:2011/12/19 23:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!