web-dev-qa-db-fra.com

Comment créer un tableau de hachages dans Ruby

Nouveau sur Ruby et j'essaie de créer un tableau de hachages (ou est-ce que je l'ai à l'envers?)

def collection
  hash = { "firstname" => "Mark", "lastname" => "Martin", "age" => "24", "gender" => "M" }
  array = []
  array.Push(hash)
  @collection = array[0][:firstname]
end

@collection n'affiche pas le prénom de l'objet en position 0 ... Qu'est-ce que je fais mal?

Merci d'avance!

22
thedeepfield

Vous utilisez un Symbol comme index dans l'objet Hash qui utilise des objets String comme clés, alors faites simplement ceci:

@collection = array[0]["firstname"]

Je vous encourage à utiliser Symbols comme Hash clés plutôt que Strings car Symbols sont mis en cache, et donc plus efficaces, donc ce serait une meilleure solution :

def collection
  hash = { :firstname => "Mark", :lastname => "Martin", :age => 24, :gender => "M" }
  array = []
  array.Push(hash)
  @collection = array[0][:firstname]
end
48
Jacob Relkin

Vous avez défini les clés de votre hachage comme String. Mais vous essayez de le référencer comme Symbol. Cela ne fonctionnera pas de cette façon.

Essayer

@collection = array[0]["firstname"]
2
Aurril

Tu peux le faire:

@collection = [{ "firstname" => "Mark", "lastname" => "Martin", "age" => "24", "gender" => "M" }]
2
RMazitov