Ruby 注入不';不行?

Ruby 注入不';不行?,ruby,Ruby,为什么这行代码不起作用 ['fdfsd','gfdhgf'].inject(Hash.new){|sum,e| sum[e] = e} 使用ruby-1.9.2-p180,得到索引器:字符串不匹配 解决了的 具有相同效果的不同方法: a = ['fdfsd','gfdhgf'] Hash[a.zip(a)] 具有相同效果的不同方法: a = ['fdfsd','gfdhgf'] Hash[a.zip(a)] 在1.9中还有每个带有对象的\u: >> ['fdfsd','gfd

为什么这行代码不起作用

['fdfsd','gfdhgf'].inject(Hash.new){|sum,e| sum[e] = e}
使用ruby-1.9.2-p180,得到
索引器:字符串不匹配


解决了的
具有相同效果的不同方法:

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

具有相同效果的不同方法:

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

在1.9中还有
每个带有对象的\u

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

请注意,与
inject
相比,块参数是相反的,您不必显式返回累加器。在这个特定的例子中,顺便说一句,我会使用J-L的答案。

在1.9中,还有
每个带有对象的\u

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

请注意,与
inject
相比,块参数是相反的,您不必显式返回累加器。在这种情况下,顺便说一下,我同意J--L的答案。

请将您的解决方案转换为自己的答案,谢谢。请将您的解决方案转换为自己的答案,谢谢。