Ruby比较对象

可能重复:
在Ruby中=== vs. ==

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

你从来没有真正打过 ===你自己。 当您使用case陈述时, 语言会在幕后调用=== : http : //www.skorks.com/2009/08/how-a-ruby-case-statement-works-and-what-you-can -DO与-它/

如果你想在case语句中使用不同于标准Object#===提供的类的行为,那么你需要重新定义它。 但我从来没有真正努力寻找替换标准定义的理由。 🙂

‘===’是比等于’==’更广泛(更弱)的概念。 ‘===’不仅在平等下变得正确,而且在诸如匹配正则表达式,作为类的实例等概念之下变得正确。尽管sarnold说,我实际上使用’===’作为速记为’kind_of?’。 A是一个class级,

 A === a 

可以用来作为速记

 a.kind_of?(A) 

有一点需要注意的是,尽管它外表,但它并不是可交换的。 所以,

 a === A 

不会按预期工作。

==用于条件语句中的相等,如if,除等等。===用于确定case语句中的相等性。