Как создать массив хашей в Ruby

Новый для ruby, и я пытаюсь создать массив хэшей (или у меня есть он назад?)

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

@collection не показывает первое имя для объекта в позиции 0... Что я делаю неправильно?

Спасибо заранее!

Ответы

Ответ 1

Вы используете Symbol как индекс в объекте Hash, который использует объекты String как ключи, поэтому просто выполните это:

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

Я бы рекомендовал использовать Symbol как Hash, а не String, потому что Symbol кэшируется и, следовательно, более эффективен, поэтому это будет лучшим решением:

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

Ответ 2

Вы определили ключи своего хэша как String. Но тогда вы пытаетесь ссылаться на него как Symbol. Это не сработает.

Попробуйте

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

Ответ 3

Вы можете сделать это:

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