一般来说,可以像这样比较两个类
x = "String"
puts "A string" if x.class == String
但是,当case
像这样使用时,
x = "String"
case x.class
when String
puts "A string"
end
它不起作用。为什么呢?
更新
在以下情况中,
x = "String"
case x
when String
puts "A string"
end
它有效。这是否意味着,case
隐式地将类转换为字符串?
答案 0 :(得分:1)
您必须删除x
上的.class方法x = "String"
case x
when String
puts "A string"
end
答案 1 :(得分:1)
通过使用===
运算符将when子句中的对象与case子句中的对象进行比较来完成比较。该运算符按预期使用文字,但不使用类。这意味着如果你想对一个对象的类进行case ... when
,这将无效。
>> 1 === 1
=> true
>> 1.class === 1.class
=> false
中,在===
实例上使用Class
的一个很好的解释和一个小小的展示