它们之间的区别是什么
case item.class
when MyClass
# do something here
when Array
# do something different here
when String
# do a third thing
end
和
case item.class
when MyClass.class
# do something here
when Array.class
# do something different here
when String.class
# do a third thing
end
出于某些原因,第一个有时有效,第二个不起作用,其他时候,第二个有效,第一个不起作用。为什么?哪种方式才是“正确”的呢?
发布于 2010-10-12 01:11:37
发布于 2010-10-12 01:37:30
是的,Nakilon是正确的,你必须知道the ===操作符是如何在when
子句中给出的对象上工作的。在Ruby中
case item
when MyClass
...
when Array
...
when String
...
是真的
if MyClass === item
...
elsif Array === item
...
elsif String === item
...
理解case是在调用一个threequal方法(例如MyClass.===(item)
),该方法可以被定义为执行任何您想做的事情,然后您可以使用带有precisionw的case语句
https://stackoverflow.com/questions/3908380
复制相似问题