Ruby中的哈希/对象数组

时间:2013-06-08 17:03:52

标签: ruby arrays object hash

我是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

我很确定有一种简单的方法可以做我需要的东西,也许甚至不使用'each'而是其他东西?

2 个答案:

答案 0 :(得分:4)

您可能正在寻找:

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

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

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

或者你可以在没有每个人的情况下做到这一点:

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

玩得开心学习Ruby! : - )

答案 1 :(得分:1)

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