Ruby大小写和===类型比较

Ruby大小写和===类型比较,ruby,Ruby,我知道case语句使用==,因此: a = "foo" =>"foo" case a when String puts "hi" end => hi 但奇怪的是: a === String => false 我期待最后一个表达式返回真值,我缺少什么 谢谢 要检查变量的类是否为字符串,请使用相等运算符= > a.class == String => true Case语句使用了不相等的=运算符。它的实现对于不同的类型是不同的(阅读文档 更多信息)。对于以

我知道case语句使用
==
,因此:

a = "foo"
=>"foo"

case a
when String
  puts "hi"
end
=> hi
但奇怪的是:

a === String
 => false
我期待最后一个表达式返回真值,我缺少什么


谢谢

要检查变量的类是否为
字符串
,请使用相等运算符
=

> a.class == String
=> true
Case
语句使用了不相等的
=
运算符。它的实现对于不同的类型是不同的(阅读文档 更多信息)。对于以下特定情况,其实现
是_a?

> String === 'foo'
=> true

> String === String
=> false

课程必须在左手边:

String === a
=> true 

这个例子并不是自解释的,你能解释一下发生了什么吗?你最初的回答与这个问题无关,我特别问了这个表达式:a===String,而不是比较类型的方法。很高兴你更新了我的答案。我同意,我原来的答案是不完整的。我想指出,您使用的
===
运算符不正确,我正在尝试快速回答。我没有把你的答案附在我的答案后面。如果你看一下你的答案的时间并编辑到我的答案,它们正好在5分钟前。不管怎样,我只是想帮忙