在Ruby中如何做出正确的“设定差别”?

前端之家收集整理的这篇文章主要介绍了在Ruby中如何做出正确的“设定差别”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
演示(我期待结果[3]):
[1,2] - [1,2,3] => []    # Hmm
[1,3] - [1,2] => [3]   # I see

a = [1,2].to_set   => #<Set: {1,2}>
b = [1,3].to_set => #<Set: {1,3}>
a - b              => #<Set: {}>  WTF!

和:

[1,9] - [1,3] => [9]  # Hmm. Would like [[9],[3]]

无论输入的顺序如何,一个执行真正的设置差异?

PS.除此之外,我需要为两个2000元素的数组执行此操作.通常,数组#1将比数组#2具有更少的元素,但不能保证.

解决方法

- operator应用于两个阵列a和b给出了a的a001(在b中不是b的项).

你正在寻找的是两套symmetric difference(两者之间的相对补充的联合).这将会诀窍:

a = [1,9]
b = [1,3]
a - b | b - a          # => [3,9]

如果您使用Set对象,则可以使用过载的^ operator

c = Set[1,9]
d = Set[1,3]
c ^ d                  # => #<Set: {3,9}>

为了额外的乐趣,您还可以在union的两组中找到intersection的相对补码:

( a | b ) - ( a & b )  # => #<Set: {3,9}>
原文链接:https://www.f2er.com/ruby/272431.html

猜你在找的Ruby相关文章