canvas
METAPOSTでいくつかのタスクが集められた抽象データ型を定義していると仮定します。参照最後に追加されたタスクですが、どのマクロ概念を使用すればよいか判断できるほど METAPOST をよく理解していません。
このような参照の使用法を示す no-op コードを次に示します。
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]