== 和 === 有什么区别?什么时候应该使用哪一个?
两者都只是在对象上调用的方法。这意味着对象决定哪个意味着什么。然而,Ruby 中有一些关于它们之间差异的约定。通常,==
比===
- a === b
几乎总是为真,如果a == b
是。阅读此内容的最佳位置是http://ruby-doc.org/core/classes/Object.html http://ruby-doc.org/core/classes/Object.html。向下滚动到有关的不同部分==
and ===
。以下是我所了解的一些约定:
-
==
,当应用于普通Object
s,仅当一个与另一个完全相同时才为真 - 如果它们存储在相同的内存位置(这就是 Ruby 内部的工作方式)。但是,如果参数的类型不是 Object,则通常会覆盖此方法。
-
equal?
就像==
对于普通的Object
s,但永远不会被子类覆盖。
-
===
is used for:
- an
is_a?
另类,倒退。String === 'str'
是真的。
- 匹配正则表达式。
/s[at]r*/ === 'str'
是真的。
具体含义你可以查一下===
对于这些类的文档中的各种类,例如Range
版本在这里(同义词include?
): http://ruby-doc.org/core/classes/Range.html#M000691 http://ruby-doc.org/core/classes/Range.html#M000691
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)