==和===有什么区别?你应该使用哪一个?Ruby比较运算符? ==与===
回答
==
用于在条件语句unless
平等等if
,等===
用于在case
语句确定平等。
作为一个例子,10不等于1..20,但它在这个范围内。因此,您可能希望能够将范围放入您的病例陈述中,并将其选中。另外,请注意,case语句翻译为b === a,如 'case a when then then end' – 2010-07-01 03:57:56
两者都只是在对象上调用的方法。这意味着对象决定哪个意味着什么。但是,Ruby中有关于这些不同的约定。通常,==
比===
严格 - a === b
将差不多总是如果a == b
是真的。阅读这篇文章的最佳地点是http://ruby-doc.org/core/classes/Object.html。向下滚动至关于==
和===
的不同部分。下面是一些我知道的惯例:
==
,当应用于纯Object
S,只会是真实的,如果一个是完全一样的其他 - 如果它们存储在相同的存储位置(这Ruby是如何在内部工作的)。但是,如果参数的类型不是Object,那么通常会覆盖此方法。equal?
就像==
对于普通Object
s,但绝不会被子类覆盖。===
用于:- 一个
is_a?
替代方案中,向后。String === 'str'
是正确的。 - 与正则表达式匹配。
/s[at]r*/ === 'str'
是正确的。
- 一个
你可以找到===
各种类这些类的文档在特定的含义,例如,Range
版本是在这里(用于include?
的同义词):http://ruby-doc.org/core/classes/Range.html#M000691
这是一个重写'=='的好例子,以便它可以完成您(可能)期望的字符串。将字符串文字和指向“相同”字符串的变量比较为“==”和“.equal”。 – Telemachus 2010-07-01 13:55:55
- 1. 比较运算符
- 2. 多个比较运算符
- 3. 比较位运算符
- 4. 逻辑比较运算符
- 5. PowerShell比较运算符
- 6. SQL比较运算符
- 7. NSNumber与<(少)运算符比较,而不是比较
- 8. 与比较运算符的日期比较
- 9. 运算符重载“运算符T *()”产生比较运算符?
- 10. C字符串的比较运算符
- 11. Lua比较运算符(通配符?)
- 12. 使用比较运算符比较postgres中的字符串?
- 13. javascript的字符串比较和比较运算符不工作?
- 14. ruby中的!=〜比较运算符是什么?
- 15. 比较运算符给出|的不同值&与或相比 - Python
- 16. gcc reverse_iterator比较运算符缺失?
- 17. C#中的比较运算符
- 18. Python的比较运算符重载
- 19. 范围解析运算符::与成员访问运算符的比较。在C#
- 20. VBScript比较运算符不工作?
- 21. 在c + +运算符重载(比较运算符)
- 22. 用算术运算符对数组进行排序数组运算符与比较运算符
- 23. 在IF语句中比较字符串与逻辑运算符
- 24. 在python中比较字符串==与==运算符
- 25. 在Java中与逻辑运算符进行字符串比较
- 26. HLSL:浮法赋值运算符比较
- 27. 比较运算符思维Sphinix
- 28. 在PHP中比较运算符重载
- 29. 泛型堆中的比较运算符
- 30. Javascript中的比较运算符
有一个非常坚实的回答这个[有什么区别平等?,eql?,===和==?](http://stackoverflow.com/questions/7156955/whats-the-difference-between-equal-eql-和) – 2014-10-07 22:59:41