【问题标题】:Ruby compare objects [duplicate]Ruby比较对象[重复]
【发布时间】:2011-03-08 18:29:53
【问题描述】:

可能重复:
=== vs. == in Ruby

我想知道 Ruby 中的 == 和 === 比较之间有什么区别?什么时候使用which的一般定义是什么?

【问题讨论】:

标签: ruby


【解决方案1】:

'===' 是比等式'==' 更广泛(更弱)的概念。 '===' 不仅在相等的情况下为真,而且在诸如匹配正则表达式、作为类的实例等概念下也是如此。尽管 sarnold 说了什么,我实际上确实使用 '===' 作为速记对于'kind_of?'。其中 A 是一个类,

A === a

可以用作简写

a.kind_of?(A)

需要注意的一点是,尽管它看起来,但它不是可交换的。所以,

a === A

不会按预期工作。

【讨论】:

    【解决方案2】:

    你从来没有真正打电话 ===自己。当您使用case 语句时,语言 在后台调用===http://www.skorks.com/2009/08/how-a-ruby-case-statement-works-and-what-you-can-do-with-it/

    如果您希望case 语句中的类的行为不同于标准Object#=== 提供的行为,那么您需要重新定义它。但我从来没有真正认真地寻找过替换标准定义的理由。 :)

    【讨论】:

      【解决方案3】:

      == 用于 if、unless 等条件语句中的相等性。=== 用于判断 case 语句中的相等性。

      【讨论】:

        猜你喜欢
        • 2012-09-14
        • 2021-09-15
        • 2011-05-26
        • 2013-10-02
        相关资源
        最近更新 更多