Как создать массив хашей в 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" }]