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语句中的相等性。