#ruby #nomethoderror #fixnum
#ruby #nomethoderror #fixnum
Вопрос:
Прорабатываем вводное упражнение Ruby с этим кодом:
num = 8
7.times do
print num.type, " ", num, "n"
num *= num
end
Я продолжаю получать:
NoMethodError: undefined method `type' for 8:Fixnum
Должен ли я определять тип? Я думал, что это метод, который распознал ruby
Комментарии:
1. хорошо, только что нашел сообщение, в котором говорится, что нужно использовать object.class вместо этого… почему это лучше, чем использование .type?
2. за 30 секунд до ответа =)
3. @user3738855 почти всегда лучше использовать существующие методы 😉
4.Кстати, ваш пример взят из книги «кирка». Согласно предисловию «В этой книге представлена версия 1.6 Ruby, выпущенная в сентябре 2000 года».
Ответ №1:
type
Метод, используемый для возврата класса объекта, но был устаревшим давным-давно (еще в 1.8 дней) и впоследствии удален.
Вы можете использовать этот class
метод вместо этого, однако, если вы следуете руководству или чему-то подобному, это признак того, что он очень старый — возможно, 10 лет!
Ответ №2:
type
Вы, вероятно, имели в виду class
, поэтому измените type
на class
:
num = 8
7.times do
print num.class, " ", num, "n"
num *= num
end
Ответ №3:
У меня была такая же проблема с методом ‘type’ при работе с программированием Ruby: Руководство прагматичного программиста. Целью этого упражнения было показать, что целые числа хранятся в объектах классов Fixnum и Bignum, обоих подклассов класса Integer (Bignum для больших чисел). Кроме того, чтобы показать, что Ruby автоматически управляет преобразованием туда и обратно.
Но начиная с функции # 12005 в Ruby 2.4, Fixnum и Bignum были объединены в целое число. С их исчезновением метод Object#type тоже исчез. Обратите внимание, что метод Object#class в этом упражнении не будет показывать различие между Fixnum и Bignum (распознает оба как целое число). Итак, да, единственное, чему это упражнение научит нас сейчас, это немного истории о Ruby.
Если вы хотите узнать больше об этих двух классах, ознакомьтесь с первым упражнением «Стандартные типы» из книги.