我正在尝试创建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是一个有效的字符串......
答案 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中使用过...