Есть два ответа на ваш вопрос, и оба они действительны:
Технически, все, что возвращает значение false
или nil
, действует как ложное логическое значение при выполнении условного теста, так же как и не-nil или true
значение действует как истина.Таким образом, рассматриваемый метод будет работать правильно в большинстве случаев, когда вы захотите узнать, является ли что-то целым числом.
Но стилистически это метод, заканчивающийся на '?'должен возвращать логическое значение true
или false
и только те.
Рассматриваемый метод не совсем соответствует нашим ожиданиям и не справляется с POLS («принципом наименьшего удивления»), потому что вы можете разумно ожидать возврата логического значения и получить целое число или ноль.Это может привести к неприятным сюрпризам в коде, когда он завершается с неожиданным значением nil
или значением Fixnum.
Так что, хотя это допустимый метод, это не хороший метод, и яподнял бы это в обзоре кода.И это приводит к отдельному обсуждению того, как такие тонкие вещи могут улучшить или повредить обслуживание кода, но это совершенно другое обсуждение.