У меня проблема с хэшем объектов.Мои хэши - это имена игроков, и у объекта также есть свойство @name
.
Я пытаюсь перебрать несколько игроков и иметь возможность использовать их методы и тому подобное с довольно чистым кодом.Вот как я создаю хеш:
puts "Who all is playing?"
gets.split.each do |p|
players[p] = Player.new(p)
end
И затем я хочу перебрать игроков таким образом, но это не работает.
players.each_key do |p_name, obj|
puts obj.name + " turn"
Однако это работает:
players.each_key do |p_name, obj|
puts players[p_name].name + " turn"
С первой попытки я получаю ошибку, что obj равен nil.Может кто-нибудь объяснить, почему это не сработает, и как это сделать так, как я хотел бы?
Спасибо!
PS Какова правильная терминология для массива или хэша, которые я сделал?Я пришел из PHP, поэтому я думаю о нем как о массиве (с хешами), но технически это не массив в Ruby?