嵌套对象上的each_value

时间:2013-11-03 22:22:55

标签: ruby-on-rails ruby

我已经获得了each_value

的嵌套对象
{"B"=>#<Destination:0x2998b60 @city=#<City:0x2998bc0 @name="B", @destinations=
    {"C"=>#<Destination:0x2998a28 @city=#<City:0x2998aa0 @name="C", @destinations=
        {"A"=>#<Destination:0x2998920 @city=#<City:0x2998c20 @name="A", @destinations={...}>, @distance=3>}
    >, @distance=2>}
>, @distance=1>}

在下面的循环中

@destinations.each_value do |dest|
    puts dest.city
    dest.city.all_routes_to(end_of_route, maximum_stops, stops + 1).each do |connection|
        connected_routes << build_route_to(dest).connect(connection)
    end
end

我没有得到的是当我运行时,我得到B,C,A

所以我认为each_value会循环遍历它的所有子对象,但在Ruby文档中找不到它。

这个功能是如何工作的还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

不。标准each_value方法为哈希中的每个键调用一次块,并按http://apidock.com/ruby/Hash/each_value传递值。我只能假设@destinations被块中的代码修改或者其他东西正在生成输出。