奇怪的行为:Fixnum值与案例中的数字不匹配...时

时间:2011-06-17 16:11:17

标签: ruby case numeric

我有一段代码如下:

case n
when Numeric
  (do this)
else
  (do that)
end

但是当n是Fixnum时它正在执行“(do that)”。我在(做那个)设置断点并且做了“pp n.class”产生“Fixnum”的输出。我也尝试了“pp Numeric === n”,它产生了“false”,“pp Numeric === 5”,产生了“true”。怎么能报告一类Fixnum但却未通过测试“Numeric === n”?

1 个答案:

答案 0 :(得分:0)

您确定n确实是Fixnum吗?

>> n = 5 #=> 5
>> case n
..   when Numeric
..     "Numeric"
..   else
..     "Not numeric"
..   end #=> "Numeric"

只是问因为你还提到Numeric === n返回false,它不应该:

>> n = 5 #=> 5
>> Numeric === n #=> true

您是否可以发布一些更大的代码片段(我知道您说n.classFixnum,但代码肯定不会那样)。