Использование родовых параметров
Использование родовых параметров
Универсальность лежит в основе интересной идеи, впервые высказанной Францем Вебером (Franz Weber). Объявим класс SKIER1, ограничив универсализацию родового параметра классом ROOM:
class SKIER1 [G -> ROOM] feature
accommodation: G
accommodate (r: G) is ... require ... do accommodation := r end
end
Тогда класс GIRL1 будет наследником SKIER1 [GIRL_ROOM] и т. д. Тем же приемом, каким бы странным он не казался на первый взгляд, можно воспользоваться и при отсутствии параллельной иерархии: class SKIER [G -> SKIER].
Этот подход позволяет решить проблему ковариантности. При любом использовании класса необходимо задать фактический родовой параметр ROOM или GIRL_ROOM, так что неверная комбинация просто становится невозможной. Язык становится безвариантным, а система полностью отвечает потребностям ковариантности благодаря родовым параметрам.
К сожалению, эта техника неприемлема как общее решение, поскольку ведет к разрастанию списка родовых параметров, по одному на каждый тип возможного ковариантного аргумента. Хуже того, добавление ковариантной подпрограммы с аргументом, тип которого отсутствует в списке, потребует добавления родового параметра класса, а, следовательно, изменит интерфейс класса, повлечет изменения у всех клиентов класса, что недопустимо.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Передача параметров
Передача параметров В дополнение к номеру вызова, большинство системных вызовов требует передачи им одного или нескольких параметров. Во время перехвата исключительной ситуации пространство пользователя должно каким-либо образом передать ядру эти параметры. Самый
Проверка параметров
Проверка параметров Системные вызовы должны тщательно проверять все свои параметры для того, чтобы убедиться, что их значения адекватны и законны. Системные вызовы выполняются в пространстве ядра, и если пользователь может передать неправильные значения ядру, то
Освобождение параметров
Освобождение параметров int pthread_mutexattr_destroy(pthread_mutexattr_t* attr);Вызов разрушает ранее применявшийся объект - атрибутную запись мьютекса, после чего она уже не может более использоваться для инициализации мьютекса без предварительного выполнения вызова pthread_mutexattr_init().На этом
26.2. Использование таблиц параметров
26.2. Использование таблиц параметров 26.2.1. Создание содержимого popt может чередовать синтаксический анализ нескольких совокупностей командных строк. Для этого она сохраняет всю информацию о состоянии для определенной совокупности аргументов командных строк в структуре
26.5. Псевдонимы параметров
26.5. Псевдонимы параметров Одним из основных преимуществ использования библиотеки popt по сравнению с функцией getopt() является возможность использования псевдонимов параметров. Благодаря ним пользователь может определить параметры, которые popt будет расширять их на другие
5.6.1 Разновидности параметров
5.6.1 Разновидности параметров Параметры разделяются на три класса: позиционные параметры, специальные параметры (именами которых как раз и служат перечисленные только что специальные символы) и переменные оболочки.Имена (идентификаторы) позиционных параметров состоят
14.3. Настройка параметров
14.3. Настройка параметров Программа Защитник Windows имеет достаточно много параметров, с помощью которых можно настраивать, в частности, ее реакцию на те или иные события. Например, с помощью параметров можно задать плановое сканирование компьютера.Чтобы получить доступ к
Использование y -параметров для расчета схем
Использование y-параметров для расчета схем Вызывает затруднения практическое использование y-параметров в типичной ситуации, когда к четырехполюснику, для которого были найдены y-параметры, подключаются неидеальный источник напряжения и резистор нагрузки (рис. 12.6).
Использование z-параметров для расчета схем
Использование z-параметров для расчета схем Рис. 12.15. Схема с источником и нагрузкойТипичная схема имеет неидеальный источник с полным внутренним сопротивлением на входе и полное сопротивление нагрузки, подключенное к выходу (рис. 12.15). Можно показать, что Некоторые из
Семантика параметров
Семантика параметров До этого мы имели дело с синтаксисом передачи параметров и получили механизм синтаксического анализа для его обработки. Сейчас мы должны рассмотреть семантику, т.е. действия, которые должны быть предприняты когда мы столкнемся с параметрами. Это
Панель параметров
Панель параметров Панель параметров имеет разный вид для каждого инструмента. На рис. 8.2 для примера показаны панели для инструментов Eraser (Ластик) и Type (Текст). Рис. 8.2. Панели параметров разных
У18.3 Однократные функции в родовых классах
У18.3 Однократные функции в родовых классах Приведите пример однократной функции, чей результат включает родовой параметр, и, если он не корректен, порождает ошибку времени