diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-10-12 12:39:29 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-10-14 17:04:19 +0900 |
| commit | bdacdfaea9bf4b52770c32d60b7d402b48297c58 (patch) | |
| tree | f8ee993ff370683fcff2ad60c540e167bd99ba4e /mrbgems/mruby-array-ext | |
| parent | 682406a38425fd6389a67580e524b9c5c15c25fb (diff) | |
| download | mruby-bdacdfaea9bf4b52770c32d60b7d402b48297c58.tar.gz mruby-bdacdfaea9bf4b52770c32d60b7d402b48297c58.zip | |
Add `Array#intersection` which is new in Ruby2.7.
Diffstat (limited to 'mrbgems/mruby-array-ext')
| -rw-r--r-- | mrbgems/mruby-array-ext/mrblib/array.rb | 18 | ||||
| -rw-r--r-- | mrbgems/mruby-array-ext/test/array.rb | 8 |
2 files changed, 26 insertions, 0 deletions
diff --git a/mrbgems/mruby-array-ext/mrblib/array.rb b/mrbgems/mruby-array-ext/mrblib/array.rb index fa3db3a70..be1676666 100644 --- a/mrbgems/mruby-array-ext/mrblib/array.rb +++ b/mrbgems/mruby-array-ext/mrblib/array.rb @@ -175,6 +175,24 @@ class Array ## # call-seq: + # ary.intersection(other_ary,...) -> new_ary + # + # Set Intersection---Returns a new array containing elements common to + # this array and <i>other_ary</i>, removing duplicates. + # + # ["a", "b", "c"].union(["c", "d", "a"], ["a", "c", "e"]) + # #=> ["a", "b", "c", "d", "e"] + # + def intersection(*args) + ary = self + args.each do |x| + ary = ary & x + end + ary + end + + ## + # call-seq: # ary.flatten -> new_ary # ary.flatten(level) -> new_ary # diff --git a/mrbgems/mruby-array-ext/test/array.rb b/mrbgems/mruby-array-ext/test/array.rb index 0cfb1e857..cb76559c7 100644 --- a/mrbgems/mruby-array-ext/test/array.rb +++ b/mrbgems/mruby-array-ext/test/array.rb @@ -111,6 +111,14 @@ assert("Array#&") do assert_equal [1, 2, 3, 1], a end +assert("Array#intersection") do + a = [1, 2, 3, 1, 8, 6, 7, 8] + b = [1, 4, 6, 8] + c = [1, 5, 7, 8] + + assert_equal [1, 8], a.intersection(b,c) +end + assert("Array#flatten") do assert_equal [1, 2, "3", {4=>5}, :'6'], [1, 2, "3", {4=>5}, :'6'].flatten assert_equal [1, 2, 3, 4, 5, 6], [1, 2, [3, 4, 5], 6].flatten |
