【发布时间】:2011-04-23 22:19:06
【问题描述】:
有什么区别
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
出于某种原因,有时第一个有效而第二个无效,而其他时候,第二个有效而第一个无效。为什么?哪一种是“正确”的做法?
【问题讨论】:
-
字符串是一个类。一个类的类是Class。
-
注意
MyClass === obj使用Module#===方法来检查obj是否是MyClass的实例。
标签: ruby duck-typing case-statement