注入不起作用?

时间:2011-07-19 08:49:30

标签: ruby

为什么这行代码不起作用?

['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}

2 个答案:

答案 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'的答案。

相关问题