Ruby 如何做到理智;“设置差异”;用红宝石?

Ruby 如何做到理智;“设置差异”;用红宝石?,ruby,set-difference,Ruby,Set Difference,演示(我期望结果[3]): 无论输入的顺序如何,如何执行实数集差异 顺便说一句,我需要对两个2000元素的数组执行此操作。通常,数组#1的元素比数组#2的元素少,但这不是保证的。应用于两个数组a和b的元素给出b在a中的元素(在a中但不在b中的项目) 您要寻找的是两个集合的集合(这两个集合之间的两个相对互补项的并集)。这将实现以下目的: a = [1, 2, 9] b = [1, 2, 3] a - b | b - a # => [3, 9] 如果在对象上操作,可以使用重

演示(我期望结果
[3]
):

无论输入的顺序如何,如何执行实数集差异

顺便说一句,我需要对两个2000元素的数组执行此操作。通常,数组#1的元素比数组#2的元素少,但这不是保证的。

应用于两个数组
a
b
的元素给出
b
a
中的元素(在
a
中但不在
b
中的项目)

您要寻找的是两个集合的集合(这两个集合之间的两个相对互补项的并集)。这将实现以下目的:

a = [1, 2, 9]
b = [1, 2, 3]
a - b | b - a          # => [3, 9]
如果在对象上操作,可以使用重载:

c=Set[1,2,9]
d=设置[1,2,3]
c^d#=>#
为了获得更多乐趣,您还可以在以下两组中找到的相对补充:

( a | b ) - ( a & b )  # => #<Set: {3, 9}>
(a|b)-(a&b)#=>#

+1,回答得很好。我将数组#^添加到我的中,并不总是需要遍历集合。
a = [1, 2, 9]
b = [1, 2, 3]
a - b | b - a          # => [3, 9]
c = Set[1, 2, 9]
d = Set[1, 2, 3]
c ^ d                  # => #<Set: {3, 9}>
( a | b ) - ( a & b )  # => #<Set: {3, 9}>