Refactor #flatten_merge

Not to unnecessary recursive search.
This commit is contained in:
yui-knk
2014-08-03 12:52:29 +09:00
parent 0d89802877
commit a442f232e9
+2 -2
View File
@@ -83,19 +83,19 @@ class Set
# end
#
def flatten_merge(set, seen = Set.new)
seen.add(set.object_id)
set.each { |e|
if e.is_a?(Set)
if seen.include?(e_id = e.object_id)
raise ArgumentError, "tried to flatten recursive Set"
end
seen.add(e_id)
flatten_merge(e, seen)
seen.delete(e_id)
else
add(e)
end
}
seen.delete(set.object_id)
self
end