Ruby Hash bug帮助!

时间:2010-09-24 22:16:10

标签: ruby string hash integer typeerror

我正在尝试创建Ruby Hash对象,其中键是对象@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是一个有效的字符串......

2 个答案:

答案 0 :(得分:0)

这个例子有帮助吗?

> class MyClass
>   attr_reader :name
>   def initialize
>     @name = "myname"
>   end
> end
=> nil
> m = MyClass.new
=> #<MyClass:0x47c3e0 @name="myname">
> puts m.name
myname
=> nil
> myHash = {}
=> {}
> myHash[m.name] = m
=> #<MyClass:0x47c3e0 @name="myname">
> puts myHash.inspect
{"myname"=>#<MyClass:0x47c3e0 @name="myname">}
=> nil

注意attr_reader :name为名称创建一个getter方法。

答案 1 :(得分:0)

意外地重用了一个数组的变量名...哎呀!

出于某种原因,我认为哈希是骗过我的,因为我之前没有在Ruby中使用过...