Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
bb:redbook:210 [2019/07/24 10:07] caufman [2. Абстрактные типы] |
bb:redbook:210 [2019/07/24 10:20] caufman [4. Ограниченные типы] |
||
---|---|---|---|
Строка 50: | Строка 50: | ||
==== 3. Расширяемые типы ==== | ==== 3. Расширяемые типы ==== | ||
Расширяемые типы чем-то похожи на абстрактные. Отличие состоит в том, что тип, описанный как расширяемый, | Расширяемые типы чем-то похожи на абстрактные. Отличие состоит в том, что тип, описанный как расширяемый, | ||
- | + | MODULE Test_extensible; | |
- | + | ||
+ | TYPE | ||
+ | tVector = EXTENSIBLE RECORD | ||
+ | x: REAL; | ||
+ | y: REAL; | ||
+ | END; | ||
+ | |||
+ | tMyVector1 = RECORD (tVector) | ||
+ | z: REAL; | ||
+ | END; | ||
+ | |||
+ | VAR | ||
+ | v: tVector; | ||
+ | v1: tMyVector1; | ||
+ | |||
+ | BEGIN | ||
+ | END Test_extensible. | ||
Абстрактный тип, также может расширяться в типах-потомках, | Абстрактный тип, также может расширяться в типах-потомках, | ||
Строка 59: | Строка 75: | ||
Пример приводится ниже: | Пример приводится ниже: | ||
- | + | MODULE Test_limited; | |
- | + | ||
- | + | | |
+ | tVector = LIMITED RECORD | ||
+ | x: REAL; | ||
+ | y: REAL; | ||
+ | END; | ||
+ | |||
+ | tMyVector1 = RECORD (tVector) | ||
+ | z: REAL; | ||
+ | END; | ||
+ | |||
+ | VAR | ||
+ | v: tVector; | ||
+ | v1: tMyVector1; | ||
+ | |||
+ | BEGIN | ||
+ | END Test_limited. | ||
Как видно в примере, | Как видно в примере, | ||
Исправленный пример ниже: | Исправленный пример ниже: | ||
- | + | MODULE Test_limited; | |
- | + | ||
+ | TYPE | ||
+ | tVector = LIMITED RECORD | ||
+ | x: REAL; | ||
+ | y: REAL; | ||
+ | END; | ||
+ | |||
+ | tMyVector1 = LIMITED RECORD (tVector) | ||
+ | z: REAL; | ||
+ | END; | ||
+ | |||
+ | VAR | ||
+ | v: tVector; | ||
+ | v1: tMyVector1; | ||
+ | |||
+ | BEGIN | ||
+ | END Test_limited. | ||
И как видно, никаких вопросов у компилятора к программисту не возникает. [↑] | И как видно, никаких вопросов у компилятора к программисту не возникает. [↑] | ||