Ruby поддерживает целые числа и числа с плавающей запятой.
Целые числа могут быть любого порядка (фактически они ограничены выше объемом памяти, выделенной вашей операционной системой).
Целые числа в диапазоне (-2^30, 2^30 - 1) или (-2^62, 2^62 -1) хранятся в двоичной форме и представляют собой экземпляры класса.
Фикснум .
Целые числа вне этих диапазонов сохраняются как экземпляры класса.
Бигнум (на данный момент класс представляет собой набор переменной длины, элементы которого являются экземплярами класса Фикснум ).
Разница очевидна для пользователя, и Ruby автоматически преобразует классы в обе стороны.
число = 81 6. раз делаю помещает "#{num.class}: #{num}" число *= число конецдам
Фиксный номер: 81 Фиксный номер: 6561 Фиксный номер: 43046721 Бигнум: 1853020188851841 Бигнум: 3433683820292512484657849089281 Бигнум: 11790184577738583171520872861412518665678211592275841109096961Чтобы записать целочисленный литерал, вы можете использовать знак ( " + " или " - " ), необязательный индикатор, указывающий, в каком виде следует записать число (см.
пример: 0 для восьмеричной, 0д для десятичной системы — применяется по умолчанию, 0x для шестнадцатеричного или 0б для двоичного кода), затем напишите строку, состоящую из чисел.
В этой строке игнорируются символы подчеркивания, а некоторые используют их вместо запятых в больших количествах.
123456 => 123456 #Фиксномер 0d123456 => 123456 #Фикснум 123_456 => 123456 # Подчеркивания Fixnum игнорируются -543 => 543 # Fixnum отрицательное число 0xaabb => 43707 # Шестнадцатеричная форма Fixnum 0377 => 255 # Fixnum восьмеричная форма 0b10_1010 => 42 # Бинарная форма Fixnum со знаком минус 123_456_789_123_456_789 => 123456789123456789#БигнумВы можете генерировать управляющие символы (например, возврат каретки), используя форму ?\C-x И ?\cx .
Метасимволы ( х | 0x80 ) можно сгенерировать с помощью ?\M-x .
Их комбинация генерируется с помощью ?\M-\C-x .
Число обратной косой черты можно получить, используя обозначение ?\\ .
Эa => 97 # ASCII-символ ?\n => 10 # код новой строки (0x0a) ?\C-a => 1 # CTRL a = ЭA & 0x9f = 0x01 ?\M-a => 225 # метаустанавливает бит 7 ?\M-\C-a => 129 # мета и элемент управления a ?\C-? => 127 # удалить символЧисловой литерал с десятичной точкой и/или показателем соответствует объекту класса.
Плавать , что, в свою очередь, соответствует нативному типу двойной Операционная система.
После точки должна быть цифра, например, если вы записываете число 1.0e3 в форме 1.e3 , Ruby попытается вызвать метод е3 сорт Фикснум .
Все числа являются объектами и отвечают на большое количество сообщений.
Это отличается, например, от C++: модуль числа нужно найти с помощью число.
abs , но нет абс(число) .
Целые числа поддерживают некоторые полезные итераторы.
Их имена говорят сами за себя: 6 раз вызывает связанный блок кода 6 раз, вплоть до И вплоть до необходимы для установки верхнего или нижнего предела количества вызовов блока кода.
Сорт Числовой предоставляет общий метод шаг , больше похоже на привычное всем для .
3.times {напечатать "X"} 1.до(5) {|я| напечатайте я, " " } 99.downto(95) {|i| напечатайте я, " " } 50.шаг(80, 5) {|я| напечатайте я, " " }дам
Х Х Х 1 2 3 4 5 99 98 97 96 95 50 55 60 65 70 75 80Наконец, небольшое предупреждение для Perl-программистов (и некоторых других): строки, содержащие числа, не преобразуются в числа автоматически.
Это может вас подвести, если вы читаете числа из файла.
Например, мы хотим найти сумму цифр в каждой строке из файла:
3 4 5 6 7 8Следующий код даст некоторые неожиданные результаты:
some_file.each do |line| v1, v2 = line.split #разбить строку на объекты между пробелами напечатайте v1 + v2, " " конецдаст нам
34 56 78Проблема в том, что v1 И v2 содержат ссылки на строковые объекты.
Для них результатом операции сложения будет конкатенация двух строк.
Чтобы добиться желаемого результата, используйте метод Integer, чтобы привести строку к целому числу.
some_file.each do |line| v1, v2 = line.split #разбить строку на объекты между пробелами напечатать Целое число(v1) + Целое число(v2), " " конецнаконец, это дает нам:
7 11 15Ура! Перевод книги Дэйв Томас - Программирование Ruby .
Теги: #Программирование Ruby #ruby #Чулан
-
Chatops В Gitlab Будет Доступен Каждому
19 Oct, 24 -
Пресс-Конференция Google В Киеве
19 Oct, 24 -
Естественность И Стандартная Модель
19 Oct, 24 -
Разборка Apple Watch От Ifixit
19 Oct, 24 -
Сотрудники Google Спят В Коконах Инопланетян
19 Oct, 24