Question

Je suis en train de créer un Ruby Hash d'objets, dont les clés sont l'objet membre @name:

# m is an object with an @name instance variable (a string)
myHash = {}
myHash[m.name] = m

Il est donné cette erreur:

#<TypeError: can't convert String into Integer>

Quelqu'un sait pourquoi? Je suis sûr que m.name est une chaîne valide ...

Était-ce utile?

La solution 2

A été accidentellement réutilisant un nom de variable qui était un tableau ... oups!

Pour une raison quelconque, je pensais que le hachage me tromper parce que je n'avais pas utilisé une à Ruby avant ...

Autres conseils

Est-ce que cette aide exemple RIR?

> 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

Remarquez la attr_reader :name qui crée une méthode de lecture pour le nom.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top