Ruby Hash bug help! - PullRequest
       27

Ruby Hash bug help!

0 голосов
/ 25 сентября 2010

Я пытаюсь создать Ruby Hash объектов, ключами которых являются объекты @name member:

# 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 голосов
/ 25 сентября 2010

Случайно повторно использовал имя переменной, которая была массивом ... упс!

По какой-то причине я думал, что хэш обманул меня, потому что я раньше не использовал его в Ruby ...

0 голосов
/ 25 сентября 2010

Помог ли этот пример irb?

> 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, который создает метод получения для имени.

...