小编Zen*_*rou的帖子

为什么self.class === MyClass返回false,而self.class == MyClass返回true?

我正在使用Ruby的case语法来设置一些基于self.class如下的简单逻辑:

case self.class
 when FirstClass
   do stuff....
 when SecondClass
   do other stuff...
 end
Run Code Online (Sandbox Code Playgroud)

我很快意识到这总是回归nil.经过仔细调查,我发现case使用===而不是==检查平等.当self.class == FirstClass我在我的终端中运行时,我得到true了预期,但self.class === FirstClass返回false.

展望红宝石文档,我发现了以下的解释===:

Case Equality - 对于Object类,实际上与调用#==相同,但通常由后代重写,以在case语句中提供有意义的语义.

谁可以在那里揭示可能发生的事情?提前致谢.

ruby

9
推荐指数
1
解决办法
163
查看次数

标签 统计

ruby ×1