2012-09-10 58 views
0

我知道我的x.to_s不工作,我需要使用.send(something)但我无法获得正确的语法。如果你能告诉我正确的发送语法,我会很感激。使用散列函数发送函数

h = Hash.new 
@cars.each do|x| 
    h["x.to_s"] = 0 
end 
+2

你究竟想完成什么?如果您试图将'x'的字符串表示形式用作散列键,则必须删除引号,即'h [x.to_s] = 0'。 – waldrumpus

+0

修复它,放在一个答案,我会接受它 –

回答

1

如果你的意思是使用的x字符串表示作为哈希键,删除引号:

h[x.to_s] = 0 
0

我想你已经发现这一点:

 
h = Hash.new 
@cars.each do|x| 
    h[x.send(:to_s)] = 0 
end 
+0

但我不明白为什么你的x.to_s不起作用,并x.send:to_s做...:S – Nucc

+1

没有必要使用'发送'。 'x.to_s'就足够了。 OP引用了它,即“x.to_s”这是问题。 – mikej

+0

好的,但你问正确的发送语法... – Nucc

0

我真不不明白你为什么需要在这里使用send。简单的有什么问题:

Hash[@cars.map(&:to_s).zip([0].cycle)] 
+0

简单?你确定编写h [“x.to_s”]的人能够理解它吗? –