116 Глава 6. Величины
Мы уже упоминали сообщение millisecondsToRun: aBlock, которое воз-
вращает число миллисекунд, необходимых для выполнения на данной ма-
шине блока aBlock. Например,
Time millisecondsToRun: [700 factorial] → 60
Ввиду того, что при выполнении любого сообщения существуют неко-
торые накладные расходы, возвращаемый результат не является точным
временем выполнения блока.
6.4. Числа: большие, малые и всякие
Как и все остальное, числа — тоже объекты. Каждый вид числовых ве-
личин представляется отдельным классом. Числовые классы реализованы
таким образом, что все числа ведут себя так, как если бы они принадле-
жали наиболее общему числовому типу. Поэтому все эти классы являются
подклассами абстрактного класса Number, который определяет общее пове-
дение, поддерживает смешанную арифметику для различных видов чисел
и обеспечивает много полезных функций различного назначения. Еще раз
подчеркнем, что в системе Смолток все бинарные сообщения имеют оди-
наковый приоритет, что не соответствует правилам, принятым в математи-
ке. Поэтому для достижения принятого в математике порядка выполнения
арифметических операций необходимо использовать круглые скобки.
Смолток поддерживает три вида чисел
1
, реализованных в соответству-
ющих подклассах: целые числа (абстрактный класс Integer и его подклас-
сы), рациональные числа (класс Fraction) — отношение двух целых чис ел
numerator (числитель) и denominator (знаменатель), числа с плавающей
точкой (класс Float), которые позволяют аппроксимировать вещественные
числа. Диапазон возможных чисел с плавающей точкой зависит от реализа-
ции. Smalltalk Express дает возможность представлять числа в диапазоне от
±4.19×10
−307
до ±1.67×10
308
. Целые числа и числа с плавающей точкой
задаются литерально. Дроби создаются, когда сообщение (/) посылается
целому числу с аргументом, равным целому числу; при этом дробь автома-
тически приводится к несократимой дроби (с взаимно простыми числите-
лем и знаменателем). Если результат имеет знаменатель, равный 1, дробь
представляется целым числом.
1
Современные реализации языка Смолток включают еще и четвертый тип чисел:
числа с фиксированной запятой, позволяющие реализовывать корректные финансо-
вые вычисления. Это дополнение включено в стандарт языка и позволяет Смолтоку
успешно конкурировать с Коболом за рынок финансовых и деловых приложений.