Jump to content

Тег (программирование)

В программировании тег это аргумент подпрограммы , который определяет другие передаваемые ему аргументы, что используется как способ передачи в подпрограмму неопределенного количества помеченных параметров; в частности, теги используются для ряда системных вызовов в AmigaOS v2.0 и более поздних версиях.

В АмигаОС

[ редактировать ]

В более ранних версиях AmigaOS , если системный вызов требовал установки большого количества параметров, вместо передачи их в качестве аргументов функции, функции требовался указатель на структуру , содержащую аргументы (например, intuition.library 's OpenWindow() необходимый struct NewWindow с 17 различными параметрами). Теги были введены в AmigaOS 2.0, потому что они «позволяют добавлять новые параметры к системным функциям, не мешая исходным параметрам. Они также делают определение списков параметров намного понятнее и проще». [1]

Ряд сторонних программных библиотек для AmigaOS также широко используют теги.

АмигаОС 1.3 АмигаОС 2.0+
struct Window *wnd;

struct NewWindow nw = {
        10, 10,
        100, 100,
        0, 1,
        IDCMP_CLOSEWINDOW,
                WFLG_SIZEGADGET | 
                WFLG_DRAGBAR |
                WFLG_DEPTHGADGET |
                WFLG_CLOSEGADGET |
                WFLG_ACTIVATE,
        NULL, NULL,
        "WikiWindow",
        NULL, NULL,
        0, 0,
        640, 400,
        WBENCHSCREEN
};

wnd = OpenWindow(&nw);
struct Window *wnd;

wnd = OpenWindowTags(NULL,
        WA_Left, 10, WA_Top, 10,
        WA_Width, 100, WA_Height, 100,
        WA_IDCMP, IDCMP_CLOSEWINDOW,
        WA_Flags,
                WFLG_SIZEGADGET |
                WFLG_DRAGBAR |
                WFLG_DEPTHGADGET |
                WFLG_CLOSEGADGET |
                WFLG_ACTIVATE,
        WA_Title, "WikiWindow",
        WA_PubScreenName, "Workbench",
        TAG_DONE );

Код без тегов малопонятен (например, 0, 1 определять цвета окон), а код с тегами самодокументируется. С помощью тегов необходимо определить меньше параметров, чем указано в структуре, поскольку OpenWindowTags вернется к параметрам по умолчанию.

Выполнение

[ редактировать ]

AmigaOS предоставляет функции для обработки тегов в своей utility.library.

Преимущество тегов состоит в том, что они облегчают работу с аргументами по умолчанию, поскольку программисту не нужно указывать их или их заменители. Отсюда вытекает еще одно преимущество, простота достижения как прямой, так и обратной совместимости с внешними библиотеками : программа, написанная для более старой версии библиотеки, будет работать и с более новой, поскольку более новая библиотека просто установит все параметры, не предусмотренные запрограммировать значения по умолчанию; и программа, написанная для более новой версии библиотеки, все равно будет работать со старой версией, поскольку старая библиотека просто не будет обращать внимания на вновь введенные теги.

Недостатком тегов является то, что их обработка происходит медленнее, чем простое чтение данных из структуры или стека . Кроме того, во время компиляции проверка типов теряется .

См. также

[ редактировать ]
  1. ^ Справочное руководство по ядру Amiga ROM: Библиотеки (3-е изд.). п. 867. ИСБН  0-201-56774-1 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 78126d27dd33279969a849b4d0a506f4__1589211420
URL1:https://arc.ask3.ru/arc/aa/78/f4/78126d27dd33279969a849b4d0a506f4.html
Заголовок, (Title) документа по адресу, URL1:
Tag (programming) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)