1

我对 Ruby 很陌生(我来自 C++ 背景),并且我有一个对象的数组/哈希,但是在尝试访问它们的变量时我没有运气。这是我的尝试:

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

我很确定有一种简单的方法可以做我需要的事情,甚至可能不使用“每个”而是其他东西?

4

2 回答 2

4

你可能正在寻找这个:

foo_list.each do |key, value|
  puts "#{key}: #{value}"
end

或者您可以扩展您自己的示例(此处 foo 将是一个包含键和值的数组):

foo_list.each do |foo|
  puts "#{foo[0]}: #{foo[1]}"
end

或者您可以在没有 each 的情况下执行此操作:

puts "one: #{foo_list["one"]}"
puts "two: #{foo_list["two"]}"

玩得开心学习 Ruby!:-)

于 2013-06-08T17:08:02.830 回答
1

foo_list.each do |key, foo|鉴于这foo_list是一个哈希值,那不应该是吗?

于 2013-06-08T17:06:10.160 回答