【发布时间】:2011-06-27 22:49:27
【问题描述】:
可能重复:
=== vs. == in Ruby
Fixnum == 2.class
#=> true
Fixnum === 2.class
#=> false
为什么=== 不起作用?我怎么知道方法 .=== 属于(现在我猜它调用了Object#== 或Object#===),但是我怎样才能确定呢?
【问题讨论】:
-
我认为
==表示它们具有相同的值,而===表示它们是相同的对象? -
正如之前在 SO 上多次回答的那样,
===也考虑了对象的类型。 -
@TyrantWave 和 @Ash --
===没有类型检查的细节。当它在Object的子类中被覆盖时。例如,Range#===在对象上执行include?。在这种情况下它不关心类型 -
@yozloy 请在提问前搜索 SO。当您输入问题标题时,您会看到大量此类问题已经得到解答。如果您单击其中一个,您就会得到答案。假设我的回答回答了你的问题,请这样标记。我将把@sawa 和@Jörg W Mittag 提供的链接添加到我的答案中
标签: ruby