为什么 [1, 1, 2] | [] == [1, 2] 在 Ruby 中是 `true` 吗?

1 ruby

我不确定二进制 OR 运算符如何在带有空数组的 Ruby 中工作,但看起来它从具有重复元素的数组中创建了一个 Set。

spi*_*ann 8

删除重复项与第二个数组为空无关。这是Array#|的正常行为 方法并在文档中描述:

ary | other_ary ? new_ary

Set Union — 通过连接arywith返回一个新数组other_ary排除任何重复项并保留给定数组的顺序。

它使用元素hasheql?方法比较元素以提高效率。