p1, p2: PARTICLE; create p1.make (...); ...
p2 := p1.conjugate
Правая часть подчеркнутого оператора имеет тип
Предприняв попытку присваивания, мы не решим проблему, а лишь запишем в |
Серьезное затруднение
Изучив класс
first_element, previous, active, next: LINKABLE [G]
В классе
Понятие опорного элемента
В отличие от других проблем, решение которых предложено в этой лекции, такое тиражирование кода не связано с тем, что система типов препятствует нам в выполнении задуманного. Повторное объявление ковариантных типов разрешает их переопределение, но заставляет нас заниматься утомительным копированием текста.
Заметим: наши примеры действительно требуют переопределения типа, но ничего более. Все сводится только к этому. Из этого следует решение проблемы - необходимо создать механизм не абсолютного, а относительного объявления типа сущности.
Назовем такое объявление закрепленным (anchored). Пусть закрепленное объявление типа имеет вид
like anchor
где
Если
my_entity: like anchor
my_entity: T
Различия проявятся только в потомках
Обнаружив, что класс содержит ряд сущностей, чьи потомки должны переопределяться одинаково, вы можете избавить себя от всех переопределений, кроме одного, объявив все элементы "подобными" (like) первому и определяя заново лишь его. Остальное будет сделано автоматически.
Вернемся к
first_element: LINKABLE [G]
previous, active, next: like first_element
Локальная сущность
Итак, закрепленные определения есть весьма важное средство сохранения возможности повторного использования при статической типизации.
Опорный элемент Current
В качестве опорного элемента можно использовать
Эта форма закрепленного объявления помогает решить оставшиеся проблемы. Исправим объявление
conjugate: like Current is
... Все остальное - в точности, как раньше ...
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии