2013-11-03 198 views
0

我有如下嵌套的對象是正在通過each_valueeach_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的文檔中找不到此。

這是該功能的工作原理還是我失去了一些東西?

回答

0

沒有。標準each_value方法爲散列中的每個鍵調用一次塊,並將其值傳遞給每個http://apidock.com/ruby/Hash/each_value。我只能假設@destinations正在被塊內的代碼修改,或者其他東西正在生成輸出。