Свежий номер №44 (421) / Завиток Интернета Дата публикации: 20.11.2001 Юрий Кулешов, yk@rbcmail.ru
Каждая переменная внутри программы на 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++: классы поддерживают множественное наследование, существует поддержка абстрактных и параметризованных классов. Все прочее, касающееся функций доступа и модификаторов, доведено до совершенства. Модификаторы, управляющие использованием класса, бывают четырех видов:
Все понятия выражены в синтаксисе, например: {define-class public Mule {inherits Horse, Donkey} || описания } Замечу, что в Curl существует специальный абстрактный класс Object, от которого неявно порождаются все классы этого языка. Таким образом, всякая иерархия в Curl имеет лишь один корень. Процедуры В Curl вполне возможно и программирование с применением обычного процедурного подхода, для чего используется ключевое слово define-proc. Процедуры в Curl очень похожи на процедуры в других языках, но есть и отличия: во-первых, процедуры в Curl являются типом данных, а во-вторых, существует понятие анонимной процедуры. Прочее В Curl присутствуют и такие элементы, как исключения, потоки (правда, не реализованные в текущей версии), сборщик мусора (как в .NET’s CLR) и locales.
|