我正在使用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 ×1