Implement Array#union which is introduced in Ruby2.6.

This commit is contained in:
Yukihiro "Matz" Matsumoto
2018-09-21 00:01:48 +09:00
parent dd346be99a
commit f23f2bbdad
2 changed files with 27 additions and 0 deletions
+19
View File
@@ -137,6 +137,25 @@ class Array
ary.uniq! or ary
end
##
# call-seq:
# ary.union(other_ary,...) -> new_ary
#
# Set Union---Returns a new array by joining this array with
# <i>other_ary</i>, removing duplicates.
#
# ["a", "b", "c"].union(["c", "d", "a"], ["a", "c", "e"])
# #=> ["a", "b", "c", "d", "e"]
#
def union(*args)
ary = self.dup
args.each_with_index do |x,i|
ary.concat(x)
ary.uniq! if i % 20 == 0
end
ary.uniq! or ary
end
##
# call-seq:
# ary & other_ary -> new_ary
+8
View File
@@ -75,6 +75,14 @@ assert("Array#|") do
assert_equal [1, 2, 3, 1], a
end
assert("Array#union") do
a = [1, 2, 3, 1]
b = [1, 4]
c = [1, 5]
assert_equal [1, 2, 3, 4, 5], a.union(b,c)
end
assert("Array#&") do
a = [1, 2, 3, 1]
b = [1, 4]