Свежий номер №44 (421) / Завиток Интернета
 
Дата публикации: 20.11.2001

Юрий Кулешов, yk@rbcmail.ru

 
<< 1
Врезка: Типы данных в Curl

Каждая переменная внутри программы на Curl связана с определенным типом данных. Предлагается большое количество встроенных, «примитивных» типов данных, а также все средства для конструирования классов и их применения.

Целочисленные типы

К целочисленным типам в Curl относят следующие: int, int8, int16, int32, int64, uint8, uint16, byte. Каждая объявленная переменная автоматически инициализируется в ноль. Если значение превышает верхнюю либо нижнюю границу, происходит «заворачивание», как и в большинстве современных языков программирования.

Числа
с плавающей точкой

Таких типов всего два: float и double. Они отличаются размерностью (32 и 64 бита, соответственно), имея при инициализации по умолчанию значение 0.0.

В том случае, когда для числа с плавающей точкой не указан суффикс, оно считается относщимся к типу double. Чтобы указать, что некоторое число имеет тип float, нужно использовать суффикс f.

Примечательно, что в Curl существует такое понятие, как бесконечность, причем бесконечности бывают и положительные, и отрицательные (+Ґ, -Ґ):

{value (1.0 / 0.0) == <infinity>} || true

Логические типы

Таковой только один: bool. Занимает 1 бит.

Символы

Размер одного символа в Curl - 16 бит, значение по умолчанию \u0000.

Величины

Похоже, авторы языка стремились охватить все возможные варианты применения Curl и в порыве энтузиазма додумались до такой вещи, как специальный тип для физических и математических величин. К встроенным относят Acceleration, Angle, Area, Distance, Fraction и многие другие. Их внутреннее представление - число в формате double или float, однако внешне это совершенно разные вещи, и вычесть из расстояния скорость у вас не получится. Существует возможность расширять список «предопределенных» значений, используя type-of.

Классы

Как и абсолютное большинство современных языков программирования, Curl предоставляет все средства для комфортной работы с классами. В поставке есть некоторое количество встроенных классов: для строк, массивов, множеств и хэш-таблиц. Поскольку класс также является типом данных, то для экземпляров этого типа существует значение по умолчанию - null.

Ничего нового в смысле классов Curl не открывает, однако в нем есть все, к чему привыкли (и от чего с приходом .NET будут понемногу отвыкать) программисты на C++: классы поддерживают множественное наследование, существует поддержка абстрактных и параметризованных классов. Все прочее, касающееся функций доступа и модификаторов, доведено до совершенства.

Модификаторы, управляющие использованием класса, бывают четырех видов:

  • abstract, сообщающий пользователю, что класс - абстрактный;

  • final, запрещающий наследование от класса с таким модификатором;

  • sealed - только подклассы в «домашнем пакете» класса с таким модификатором могут наследовать от него. Правда, существует лазейка, позволяющая наследовать от класса с таким модификатором и за пределом «домашнего пакета»;

  • shared - аналог виртуального класса в C++.

Все понятия выражены в синтаксисе, например:

{define-class public Mule {inherits Horse, Donkey}

|| описания

}

Замечу, что в Curl существует специальный абстрактный класс Object, от которого неявно порождаются все классы этого языка. Таким образом, всякая иерархия в Curl имеет лишь один корень.

Процедуры

В Curl вполне возможно и программирование с применением обычного процедурного подхода, для чего используется ключевое слово define-proc. Процедуры в Curl очень похожи на процедуры в других языках, но есть и отличия: во-первых, процедуры в Curl являются типом данных, а во-вторых, существует понятие анонимной процедуры.

Прочее

В Curl присутствуют и такие элементы, как исключения, потоки (правда, не реализованные в текущей версии), сборщик мусора (как в .NET’s CLR) и locales.



 
<< 1
Врезка: Типы данных в Curl


Юрий Кулешов
yk@rbcmail.ru
 


<< Наращивание мощи
Все материалы номера
Мегагигасердцы >>