【发布时间】:2013-01-25 00:01:15
【问题描述】:
case "Hello".class
when Integer
print "A"
when String
print "B"
else
print "C"
end
为什么我会得到“C”?期待“B”,因为如果你评估"String".class,你会得到String。
【问题讨论】:
-
很多票支持关闭这个!很抱歉 :(...,但为什么这是一个糟糕的问题?我只是在 Ruby 中发现了一个我无法理解的奇怪行为...
-
你为什么会期待
B?"Hello".class显然是Class,既不是Integer也不是String,所以C是这里唯一合理的答案。 -
@JörgWMittag 也许 OP 不知道 case 语句使用
===而不是==。 -
您(Omega)可能感兴趣的相关(但不相同)问题是stackoverflow.com/q/9537895/38765
-
@JörgWMittag:哦,我不知道——也许我对 Ruby 太陌生,不知道 case 语句使用了 ===?您可能会发现这很明显,这很好,但我没有,谢谢。
标签: ruby string class switch-statement