0

我有下面的嵌套对象正在通过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 文档中找不到它。

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

4

1 回答 1

0

没有。标准each_value方法为散列中的每个键调用一次块,并根据http://apidock.com/ruby/Hash/each_value将值传递给它。我只能假设@destinations块中的代码正在修改它,或者其他东西正在生成输出。

于 2013-11-03T22:34:28.660 回答