Странное поведение: значение Fixnum не соответствует числовому в случае ... когда - PullRequest
0 голосов
/ 17 июня 2011

У меня есть кусок кода, который выглядит следующим образом:

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

но он выполняет "(сделать это)", когда n является Fixnum. Я установил точку останова на (сделать это) и сделал "pp n.class", производя вывод "Fixnum". Я также попробовал "pp Numeric === n", который выдает "false", и "pp Numeric === 5", который выдает "true". Как n может сообщать о классе Fixnum и все же не пройти тест "Numeric === n"?

1 Ответ

0 голосов
/ 17 июня 2011

Вы уверены, что ваш 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.class - это Fixnum, но код определенно не ведет себя так).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...