sách gpt4 ăn đã đi

ruby - Array#-(减法运算符)如何比较元素是否相等?

In lại 作者:数据小太阳 更新时间:2023-10-29 06:54:32 27 4
mua khóa gpt4 giày nike

当我调用 Array#- 时,它似乎没有对我正在比较的字符串调用任何比较方法:

class String
def <=>(v)
puts "#{self} <=> #{v}"
super(v)
kết thúc

def ==(v)
puts "#{self} == #{v}"
super(v)
kết thúc

def =~(v)
puts "#{self} =~ #{v}"
super(v)
kết thúc

def ===(v)
puts "#{self} == #{v}"
super(v)
kết thúc

def eql?(v)
puts "#{self}.eql? #{v}"
super(v)
kết thúc

def equal?(v)
puts "#{self}.equal? #{v}"
super(v)
kết thúc

def hash()
puts "#{self}.hash"
siêu
kết thúc
kết thúc

p %w{one two three} - %w{two}

它只是返回:

["one", "three"]

那么,Array#- 在做什么?

另外,我使用的是 Ruby 1.9.2p290。在 1.8.7 中似乎会导致死循环。

câu trả lời hay nhất

source code for Array#- .

看起来不是测试相等性,而是从第二个数组生成散列。该数组中未包含的任何内容都会被插入结果数组。

1.8.7 中的数组差异也是以这种方式实现的。对 String 的更改只会导致 irb 出现问题(而不是普通的 ruby 脚本)。

关于ruby - Array#-(减法运算符)如何比较元素是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7477541/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress