Ruby大小写和===类型比较
我知道case语句使用Ruby大小写和===类型比较,ruby,Ruby,我知道case语句使用==,因此: a = "foo" =>"foo" case a when String puts "hi" end => hi 但奇怪的是: a === String => false 我期待最后一个表达式返回真值,我缺少什么 谢谢 要检查变量的类是否为字符串,请使用相等运算符= > a.class == String => true 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分钟前。不管怎样,我只是想帮忙