gpt4 book ai didi

ruby - Ruby 使用 == AND eql 有什么好的理由吗? ? (与 to_a 和 to_ary 类似)

转载 作者:数据小太阳 更新时间:2023-10-29 07:40:18 26 4
gpt4 key购买 nike

我知道eql? Hashes 使用它来查看对象是否与键* 匹配,而您匹配

def ==(rb)

如果您想支持 == 运算符,但哈希不使用 == 一定有充分的理由。这是为什么?你什么时候会有 == 和 eql 的定义? 是等价的(例如,一个是另一个的别名)?

同样,为什么除了to_a之外还要有to_ary?

这个问题是对 answer 的回应有人给了我another question .

* 当然一个Hash也假设eql? == true 表示哈希码相等。

此外,重写相等基本上是一个糟糕的主意吗? ?

最佳答案

== 检查两个值是否相等,而 eql?检查它们是否相等且类型相同。

irb(main):001:0> someint = 17
=> 17
irb(main):002:0> someint == 17
=> true
irb(main):003:0> someint.eql? 17
=> true
irb(main):004:0> someint.eql? 17.0
=> false
irb(main):005:0> someint == 17.0
=> true
irb(main):006:0>

如你所见,eql?还将测试两个值是否为同一类型。在与 17.0 比较的情况下,等同于 false,这是因为 someint 不是浮点值。

关于ruby - Ruby 使用 == AND eql 有什么好的理由吗? ? (与 to_a 和 to_ary 类似),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/770418/

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