2011-07-19 72 views
0

你知道爲什麼這行代碼不起作用嗎?注入不起作用?

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

在1.9有也each_with_object

>> ['fdfsd','gfdhgf'].each_with_object(Hash.new){|e,sum| sum[e] = e} 
=> {"fdfsd"=>"fdfsd", "gfdhgf"=>"gfdhgf"} 

請注意,與inject相比,塊參數是相反的,您不必顯式返回累加器。順便說一句,在這個特定的情況下,我會和J-L一起回答。

2

不同的方法有同樣的效果:

a = ['fdfsd','gfdhgf'] 
Hash[a.zip(a)]