假设我们在 METAPOST 中定义一个canvas
抽象数据类型,其中收集了一些任务。我想定义一种参考到最后添加的任务,但我对 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]
如评论中所建议的)?