Ruby 2.7.0 リファレンスマニュアル > ライブラリ一覧 > tsortライブラリ > TSortモジュール > tsort_each
tsort_each {|node| ...} -> nil
[permalink][rdoc]tsort_each -> Enumerator
TSort#tsort メソッドのイテレータ版です。 obj.tsort_each は obj.tsort.each と似ていますが、ブロックの評価中に obj が変更された場合は予期しない結果になることがあります。
tsort_each は nil を返します。閉路が存在するとき、例外 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