OberonCore https://forum.oberoncore.ru/ |
|
Расширение LIMITED https://forum.oberoncore.ru/viewtopic.php?f=29&t=5944 |
Страница 1 из 1 |
Автор: | Илья Ермаков [ Четверг, 03 Ноябрь, 2016 23:18 ] |
Заголовок сообщения: | Расширение LIMITED |
Открыл для себя, что LIMITED-типы могут расширяться, в рамках одного модуля. Это правильно. В Сообщении о языке этого не вижу: Цитата: Переменные записевого типа, имеющего атрибут LIMITED, могут размещаться [allocated] только внутри того модуля, где описан данный тип. Ограничение применимо как к статическому размещению посредством описания переменных (гл. 7), так и к динамическому размещению с помощью стандартной процедуры NEW (10.3). Записевый тип, помеченный как ABSTRACT или EXTENSIBLE, допускает расширенное переопределение, т.е. можно определить новый записевый тип как расширение такого типа. Это указано в документах "Что нового в Компонентном Паскале?" в табличке этих новых атрибутов, под сноской-звёздочккой. И в "3 Приёмы проектирования в Блэкбоксе". Цитата: Компонентный Паскаль превосходит Java в нескольких других языковых конструктах. Один является ограниченными [limited] записями. Это записи, которые могут быть расширены и размещены только внутри описывающего их модуля.
|
Автор: | Trurl [ Суббота, 05 Ноябрь, 2016 21:38 ] |
Заголовок сообщения: | Re: Расширение LIMITED |
Я это применял в интерфейсах к GTK. Код: GtkRange* = POINTER TO LIMITED RECORD (GtkWidget) END; GtkScrollbar* = POINTER TO LIMITED RECORD (GtkRange) END; GtkHScrollbar* = POINTER TO LIMITED RECORD (GtkScrollbar) END; GtkVScrollbar* = POINTER TO LIMITED RECORD (GtkScrollbar) END; Еще интересная штука: Код: POINTER TO LIMITED RECORD [untagged] END Можно, например, выстроить иерархию HANDLE -> HGDIOBJ -> HBITMAP. Или сделать перечисления, почти как настоящие. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |