КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Управление типами в технологии .NET
Полимофная типизация Статическая типизация Пример 1. Определим тип статической переменной x, которой присвоим значение, сводимое к целому типу: val x=2*3; val x = 6: int Как и следовало ожидать, значение переменной x оказывается целочисленным (int). Заметим, что функция val, которая используется в примере, является стандартной функцией языка программирования SML для определения типа языкового объекта, т.е. фактически осуществляет приписывание типа (при необходимости используя механизм выводимости типов). Пример 2. Определим тип константы, которой присвоим значение, также сводимое к целому типу: 1+2; 3: int Как и следовало ожидать, значение константы 3 также оказывается целочисленным (int). Пример 3. Определим тип функции сложения двух целочисленных аргументов: fun add (x: int)(y: int) = x+y; val add = fn: int -> int -> int Как видно из результата, типом функции является функция из пары целочисленных значений в целочисленное значение (с точностью до скобок). Пример 4. Проиллюстрируем означивание (вычисление значения) определенной выше функции сложения двух целочисленных аргументов: add 1 3; val it = 4: int Очевидно, что, как и следует из ранее вычисленного типа (int -> int -> int), функция, принимая на вход пару целочисленных величин, возвращает значение целочисленного типа. Пример 5. Рассмотрим тип функции, которая является производной от функции add и выполняет операцию прибавления единицы: val f = add 1; val f = fn: int -> int Вновь введенная функция имеет тип "из целого числа в целое число" (int -> int). Наконец, означивание последней функции f 4; val it = 5: int в соответствии с ее типом дает целочисленный результат. Рассмотрим пример полиморфизма - оперирования функциями переменного типа. Для иллюстрации исследуем поведение встроенной функции hd (от слова "head" - голова), которая выделяет "голову" (первый элемент) списка, вне зависимости от типа его элементов. Пример 6. Применим функцию к списку из целочисленных элементов: hd [1,2,3]; val it = 1: int Получим, что функция имеет тип функции из списка целочисленных величин в целое число (int list -> int). Пример 7. В случае списка из значений истинности та же самая функция hd [true, false, true, false]; val it = true: bool возвращает значение истинности, т.е. имеет следующий тип: bool list -> bool Пример 8. Для случая списка кортежей из пар целых чисел hd [(1,2)(3,4),(5,6)]; val it = (1,2): int*int получим тип: ((int*int)list -> (int*int)). В итоге можно сделать вывод о том, что функция hd имеет тип (type list) -> type, где type - произвольный тип, т.е. полиморфна. Технологическая платформа.NET обеспечивает единообразное управление типами элементов всех языков программирования, реализованных на данной платформе. Это достигается за счет интегрированной обобщенной системы типизации, так называемой Common Type System, или, сокращенно, CTS. Основная особенность CTS заключается в том, что она представляет собой единую иерархию типов, и типы объектов программы, написанной на произвольном языке программирования, который поддерживается технологической платформой.NET, в ходе трансляции автоматически преобразуются в соответствующие им типы Common Type System. Таким образом, для любого языка программирования существует отображение (функция), преобразующая произвольный тип этого языка в тот или иной тип Common Type System. Естественно, язык программирования SML не является исключением. Приведем в подтверждение фрагмент отображения типов языка программирования SML в типы иерархии CTS, оформив это соответствие в виде таблицы 7.1. Таблица 7.1. Отображение типов языка программирования SML в типы иерархии CTS
Позднее мы обсудим подобное соответствие типов для языка программирования C#.
Дата добавления: 2014-01-07; Просмотров: 287; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |