为什么这行代码不起作用?
['fdfsd','gfdhgf'].inject(Hash.new){|sum,e| sum[e] = e}
使用ruby-1.9.2-p180,得到IndexError: string not matched
['fdfsd','gfdhgf'].inject(Hash.new){|sum,e| sum[e] = e; sum}
答案 0 :(得分:2)
具有相同效果的不同方法:
a = ['fdfsd','gfdhgf']
Hash[a.zip(a)]
答案 1 :(得分:2)
在1.9中还有each_with_object
:
>> ['fdfsd','gfdhgf'].each_with_object(Hash.new){|e,sum| sum[e] = e}
=> {"fdfsd"=>"fdfsd", "gfdhgf"=>"gfdhgf"}
请注意,与inject
相比,块参数是相反的,并且您不必显式返回累加器。在这个具体案例中,顺便说一下,我会用J -_- L'的答案。