Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 16 июн 2025, 22:18

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Модуль Stores
СообщениеДобавлено: 02 июл 2018, 08:42 
Не в сети

Сообщения: 116
Откуда: Каменск-Уральский
А что делает n.a := Stores.CopyOf(source.a)(Node) ?
Ясно, что n.a присваевается какой-то указатель, возвращаемый процедурой Stores.CopyOf. Но вот что делают вторые скобки "(Node)"? Или это тоже преобразование?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Модуль Stores
СообщениеДобавлено: 02 июл 2018, 09:49 
Не в сети
Администратор
Аватара пользователя

Сообщения: 108
Len писал(а):
А что делает n.a := Stores.CopyOf(source.a)(Node) ?
Ясно, что n.a присваевается какой-то указатель, возвращаемый процедурой Stores.CopyOf. Но вот что делают вторые скобки "(Node)"? Или это тоже преобразование?

Да, это явное приведение к типу.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Модуль Stores
СообщениеДобавлено: 04 июл 2018, 07:21 
Не в сети

Сообщения: 28
Вообще-то это называется не преобразованием и не приведением, а проверкой или охраной типа.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Модуль Stores
СообщениеДобавлено: 04 июл 2018, 08:19 
Не в сети
Администратор
Аватара пользователя

Сообщения: 108
trurl писал(а):
Вообще-то это называется не преобразованием и не приведением, а проверкой или охраной типа.


Сама конструкция так действительно называется, вот из документации кусочек.
Цитата:
Охрана типа [type guard] v(T) удостоверяет, что динамический тип переменной v есть T (или потомок типа T), т.е. выполнение программы аварийно прекращается, если динамический тип переменной v не T (и не потомок T). Тогда внутри составного имени переменная v считается имеющей статический тип T. Охрана применима, если

1. v является IN или VAR параметром записевого типа или v является указателем на запись, и если
2. T является потомком статического типа переменной v


Но вот этот процесс "переменная v считается имеющей статический тип T" я называю "приведением типа", так как тип переменной перед скобкой приводится к тому, который указан в скобках.

Явное приведение типа выполняется с помощью конструкции охраны типа, а неявное с помощью оператора WITH.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club