【发布时间】:2011-04-17 00:37:09
【问题描述】:
我正在尝试创建对象的 Ruby 哈希,其中键是对象 @name 成员:
# m is an object with an @name instance variable (a string)
myHash = {}
myHash[m.name] = m
它给出了这个错误:
#<TypeError: can't convert String into Integer>
有人知道为什么吗?我确定 m.name 是一个有效的字符串...
【问题讨论】:
-
在一行上单独调用 m.name 会发生什么?
-
非常肯定,请使用
p m.name.class,但我想,无论如何,问题出在其他地方...您在此处粘贴的这两行代码之间没有任何其他代码行吗? -
最好在上面的代码中加上
m.name的声明。 -
实际上错误信息与您一致,即 m.name 是一个字符串。它说它想要一个整数。这会让我认为 myHash 是一个数组,除非您之前将它定义为行上的哈希(除非实际代码实际上比这更复杂)......展示问题的可运行代码示例会很好。
-
啊,谢谢 sepp2k 让我开始这样做......我意识到我不小心重用了一个变量名来作为一个数组的哈希值...... doh! +1
标签: ruby string hash integer typeerror