Предположим, мы определяем canvas
абстрактный тип данных в METAPOST, где собраны некоторые задачи. Я хотел бы определить своего родассылкак последней добавленной задаче, но я недостаточно хорошо знаю METAPOST, чтобы понять, какую концепцию макроса мне следует использовать.
Вот код без операций, иллюстрирующий использование такой ссылки:
def task text TASK =
vardef TASK.init =
enddef;
enddef;
def canvas text CANVAS =
numeric CANVAS._task_n;
task CANVAS._task[];
vardef CANVAS.init =
#@._task_n := 0;
enddef;
vardef CANVAS.current_task =
#@._task[#@._task_n]
enddef;
vardef CANVAS.add_task =
#@._task_n := #@._task_n + 1;
% #@.current_task.init; % ! Yield an isolated expression `init`
#@._task[#@._task_n].init;
enddef;
enddef;
canvas c;
c.init;
c.add_task;
bye;
Как мне правильно определить current_task
макрос, чтобы я мог изменить макрос add_task
так, чтобы он ссылался на , current_task
а не на #@._task[#@._task_n]
(как предложено в комментарии)?