gpt4 book ai didi

ruby - 有人可以解释 '&' 在这种情况下是如何工作的吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:38:46 25 4
gpt4 key购买 nike

我发现很难找到这个问题的答案。

曾经有人向我展示了如何在数组中查找公共(public)元素:

> colours1 = %w(red green blue)
> colours2 = %w(orange red black blue)
> colours1 & colours2
=> ["red", "blue"]

但是我不明白这段代码中的'&'是做什么的,它是如何找到共同元素的?

最佳答案

为了回答它的作用,我引用了the documentation of Array#& :

Set Intersection — Returns a new array containing elements common to the two arrays, excluding any duplicates. The order is preserved from the original array.

至于如何它是如何做到的,我向您指出 rubinius implementation of Array#& 1:

def &(other)
other = Rubinius::Type.coerce_to other, Array, :to_ary

array = []
im = Rubinius::IdentityMap.from other

each { |x| array << x if im.delete x }

array
end

使用 each { |x| array << x if im.delete x }只有元素在 self (第一个数组)被添加到返回的数组中,如果它们包含在 other 中数组。


1 请注意,c-ruby 的实现方式与 rubinius 或 jruby 的实现方式略有不同。但它应该让您了解正在发生的事情。

关于ruby - 有人可以解释 '&' 在这种情况下是如何工作的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17989790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com