使用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