Тег (программирование)
Эта статья нуждается в дополнительных цитатах для проверки . ( ноябрь 2016 г. ) |
В программировании тег — это аргумент подпрограммы , который определяет другие передаваемые ему аргументы, что используется как способ передачи в подпрограмму неопределенного количества помеченных параметров; в частности, теги используются для ряда системных вызовов в 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 вернется к параметрам по умолчанию.
Выполнение
[ редактировать ]![]() | Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( октябрь 2008 г. ) |
AmigaOS предоставляет функции для обработки тегов в своей utility.library
.
В общем
[ редактировать ]Преимущество тегов состоит в том, что они облегчают работу с аргументами по умолчанию, поскольку программисту не нужно указывать их или их заменители. Отсюда вытекает еще одно преимущество, простота достижения как прямой, так и обратной совместимости с внешними библиотеками : программа, написанная для более старой версии библиотеки, будет работать и с более новой, поскольку более новая библиотека просто установит все параметры, не предусмотренные запрограммировать значения по умолчанию; и программа, написанная для более новой версии библиотеки, все равно будет работать со старой версией, поскольку старая библиотека просто не будет обращать внимания на вновь введенные теги.
Недостатком тегов является то, что их обработка происходит медленнее, чем простое чтение данных из структуры или стека . Кроме того, во время компиляции проверка типов теряется .
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Справочное руководство по ядру Amiga ROM: Библиотеки (3-е изд.). п. 867. ИСБН 0-201-56774-1 .