OberonCore https://forum.oberoncore.ru/ |
|
Super calls https://forum.oberoncore.ru/viewtopic.php?f=29&t=6611 |
Страница 1 из 1 |
Автор: | adimetrius [ Четверг, 14 Май, 2020 09:30 ] |
Заголовок сообщения: | Super calls |
Коллеги, вчитавшись в текст компилятора, а затем и в Сообщение о языке, я с удивлением обнаружил, что Super calls допустимы в отношении любой процедуры базового типа, а не только переопределяемой. TYPE B = EXTENSIBLE RECORD END; E = RECORD (B); PROCEDURE (b: B) P, NEW, EXTENSIBLE; ... PROCEDURE (b: B) Q, NEW, EXTENSIBLE; ... PROCEDURE (e: E) P; BEGIN ... e.Q^ ... END P; PROCEDURE (e: E) Q; BEGIN ... e.P^ ... END Q; PROCEDURE (e: E) R, NEW; BEGIN ... e.P^; e.Q^ ... END R; А я-то думал, что супервызовы возможно только из переопределяющей процедуры и только в адрес переопределяемой. В связи с этим вопросы: 1) кто-нибудь этим пользуется? или пользовался? 2) какой вообще use case предполагается, для чего предназначена эта возможность в языке? |
Автор: | Борис Рюмшин [ Четверг, 14 Май, 2020 10:20 ] |
Заголовок сообщения: | Re: Super calls |
Супервызовы вообще были помечены, как выводимые из языка. И это правильно. (А вот процедурные переменные, которые тоже так были помечены, выводить из языка не следует) |
Автор: | Илья Ермаков [ Четверг, 14 Май, 2020 14:29 ] |
Заголовок сообщения: | Re: Super calls |
Борис Рюмшин писал(а): Супервызовы вообще были помечены, как выводимые из языка. И это правильно. (А вот процедурные переменные, которые тоже так были помечены, выводить из языка не следует) И EXTENISBLE-процедуры с возможностью полного переопределения выводить не следует. А супервызовы, видимо, да. Или используй версионные и EMPTY-методы, или обёртки, если надо модифицировать базовое поведение. А переопределение - только полностью. С другой стороны, не вижу сильной проблемы и оставить. Насильно блокировать архитектурные решения - уже дело гиблое. Допустить архитектурную ошибку по невнимательности/в силу того, что "люди ошибаются" и т.п. (как с ошибками типов, памяти и др.) - невозможно. А запрещать осознанные действия смысла тоже нет. Всего, к тому же, не предусмотришь "из кабинета" заранее в плане архитектуры. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |