Metapost:vardef 宏的返回值

Metapost:vardef 宏的返回值

我们可以从宏中返回一个path或吗?以及如何调用返回值?谷歌说“picturevardef最后一条语句没有分号;它的值由函数返回“。我的目的是重复使用路径或图片。后面是一小段代码。但是失败了。也许我误解了什么。请注意,返回的路径或图片可能不需要画出来。它可能被用来帮助构造其他东西,例如,帮助找到交点。

vardef foo (expr from, to) =
  path p;
  p = from -- to
enddef;

beginfig(1)
  path p;
  pair A, B;
  A = (0,0);
  B = (1,1);
  p = foo (A, B);
  draw p;
endfig;

答案1

您可以这样做,而且无需指定返回对象的类型,甚至无需为其命名。这也应该适合您:

vardef foo (expr from, to) =
  from -- to
enddef;

beginfig(1)
  path p;
  pair A, B;
  A = (0,0);
  B = cm*(1,1);
  p = foo (A, B);
  draw p;

endfig;
end.

在此处输入图片描述

编辑:这是相同程序的等效但更短的编码,没有在这个简单情况下不必要的变量。

vardef foo (expr from, to) =
  from -- to
enddef;

beginfig(1)
  draw foo (origin, cm*(1,1));
endfig;
end.

相关内容