如何在 METAPOST 中定義一種引用?

如何在 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]如評論中所建議的)?

相關內容