使用case
/when
语句用于检查一个实例的类会失败。如果我比较的Answer
实例的类,如下所示,它失败:类Case语句失败,转换为字符串成功
subject = Answer.new
case subject.class
when Answer
true
else
false
end
# => false
如果我转换的Answer
实例的类的字符串,它的工作原理:
subject = Answer.new
case subject.class.to_s
when 'Answer'
true
else
false
end
# => true
这不是怎么它应该是,对?此外,当我运行一个简单的比较,它的工作原理:
subject.class == Answer
# => true
编辑:使用Ruby的case
和===
的新特性了解到,这个代码是有效的和作品。
subject = Answer.new
case subject
when Answer
true
else
false
end
# => true
Ruby'case'语句基于'==='运算符。 Google搜索“ruby triple equal case statement”,你会发现一些有趣的信息来解释你的结果。 – lurker