Angenommen, wir definieren einen canvas
abstrakten Datentyp in METAPOST, in dem einige Aufgaben gesammelt werden. Ich möchte eine ArtReferenzzur zuletzt hinzugefügten Aufgabe, aber ich kenne METAPOST nicht gut genug, um herauszufinden, welches Makrokonzept ich verwenden sollte.
Hier ist ein No-Op-Code, der die Verwendung einer solchen Referenz veranschaulicht:
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;
Wie kann ich das Makro richtig definieren current_task
, sodass ich das add_task
Makro so ändern kann, dass es auf „verweist“ current_task
statt auf #@._task[#@._task_n]
(wie im Kommentar vorgeschlagen)?