Я довольно новичок в Ruby (я исхожу из фона C++), и у меня есть массив/хэш объектов по их имени, но мне не повезло, когда пытаюсь получить доступ к их переменным , Это моя попытка:Хэш/массив объектов в Ruby
class Foo
attr_reader :num
def initialize(num)
@num = num
end
end
foo_list = {}
foo_list["one"] = Foo.new("124")
foo_list["two"] = Foo.new("567")
foo_list.each do |foo|
p "#{foo.num}" # ERROR: undefined method 'num'
end
Я уверен, что есть простой способ сделать то, что мне нужно, может быть, даже не используя «каждый», но что-то еще?
Просто совет, вы можете распечатать 'foo' в блоке, чтобы увидеть, что на самом деле' foo'. Кроме того, документация Ruby довольно хороша. Просто googling для «рубинового хэша», а затем поискать «каждый» метод, поставил бы вас на правильный путь. http://ruby-doc.org/core-2.0/Hash.html#method-i-each – gylaz
Или, если вы позволите Ruby построить свою встроенную документацию, 'ri Hash' в командной строке покажет различные методы. 'ri Hash.each' предоставил бы больше информации, специфичной для' each'. –