IPB

> Псевдонимы типов
Форум
Загрузка...
 
Час быка
Час быка
Карта Интернета
Internet Map
Яндекс.Метрика

 Псевдонимы типов


Объявление типа может объявить новый тип как эквивалентный уже существующему. При этом идентификатор нового типа становится псевдонимом для базового.

Синтаксис

 type Alias = идентификатор;

Примеры

 { Псевдонимы типов }
 type Int64 = Comp;
 type WideChar = Word;

Ада

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

 -- Псевдоним
 subtype Int64 is Integer_64;

 -- Производные типы
 type HTML_String is new Unbounded_String;
 type MySQL_Query_String is new Unbounded_String;
 type MIME_Header_String is new Unbounded_String;

В случае производных типов наследуются примитивные операции базового типа, но при этом новый тип несовместим с базовым. Для всех новых строковых типов из примера определена конкатенация. Но при этом нельзя случайно забыть экранировать строку там, где требуется HTML. Таким образом можно защититься от XSS атак, самых распространённых в Internet. Если использовать производные строковых типов для запросов к базе данных, то предотвращаются SQL Inject атаки, занимающие второе место по распространённости в Web. Наконец, если применить этот метод для заголовков отправляемых электронных писем, то предотвращается уязвимость Mail Inject. Элегантно и действенно, не правда ли?

Используйте производные типы, если случайное неявное приведение типа может создать угрозу безопасности. В других случаях вопрос остаётся открытым. Например, нельзя однозначно рекомендовать, использовать ли в GUI разные типы для горизонтальных (X, Width) и вертикальных (Y, Height) расстояний.

К сожалению, большинство современных языков программирования не позволяют создавать производные строковые типы. Аду можно смело причислить к числу тех языков, незнание которых обрекает создателей других языков программирования на изобретение велосипедов. Типичный квадратноколёсный велосипед - волшебные кавычки в PHP.

См. также

Лекция №2.1: Типы данных и операции

 
 К началу страницы 
Тэги: Types-Aliases
 

Код для вставки: :: :: :: ГОСТ ::
Поделиться: //
 


-
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"