Ruby案例和===关于类型比较

时间:2017-11-27 14:44:38

标签: ruby

我知道案例陈述使用===,所以:

a = "foo"
=>"foo"

case a
when String
  puts "hi"
end
=> hi

但很奇怪:

a === String
 => false

我期待最后一个表达式返回true,我错过了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

要检查变量的类是String,请使用相等运算符==

> a.class == String
=> true

Case语句使用不相等的===运算符。它的实现方式因不同类型而异(阅读文档 欲获得更多信息)。它针对以下具体案例实施is_a?

> String === 'foo'
=> true

> String === String
=> false