tsort_each {|node| ...} -> nil
[permalink][rdoc][edit]tsort_each -> Enumerator
-
TSort#tsort メソッドのイテレータ版です。 obj.tsort_each は obj.tsort.each と似ていますが、ブロックの評価中に obj が変更された場合は予期しない結果になることがあります。
tsort_each は nil を返します。閉路が存在するとき、例外 TSort::Cyclic を起こします。
- [EXCEPTION] TSort::Cyclic:
- 閉路が存在するとき、発生します.
require 'tsort' class Hash include TSort alias tsort_each_node each_key def tsort_each_child(node, &block) fetch(node).each(&block) end end non_sort = {1=>[2, 3], 2=>[3], 3=>[], 4=>[]} non_sort.tsort_each {|node| non_sort.tsort_each_child(node){|child| printf("%d -> %d\n", node, child) } } # 出力 #=> 2 -> 3 #=> 1 -> 2 #=> 1 -> 3
[SEE_ALSO] TSort.tsort_each