メタポストの文字列への接尾辞

メタポストの文字列への接尾辞

変換する方法はありますか?サフィックスもっと具体的に言うと、次のようなことを行う必要があります。

def myMacro (suffix a, b) =
    something.a = fOne(a);
    something.b = fOne(b);
    something.scantokens("somethingelse"&**suffixtostring**(a)&**suffixtostring**(b)) = fTwo(a,b);
enddef;

答え1

次のようなことを試してください:

def your_macro(suffix a, b) = 
  something.a = 42;
  something.b = 64;
  something.scantokens("prefix" & str a & str b & "suffix") = 94;
enddef;

your_macro(p,q);

show something.prefixpqsuffix;
% shows 94

end.

非数値型の値を代入したい場合は、something代入する前に適切に宣言する必要があります。たとえばpair something[];string something[];。ただし、これを行う場合は、接尾辞が有効でなければならないことに注意してください。数値値は使用できません。宣言された集合添字は[]数値のみ使用できるためです。

変数のスコープについても検討する必要があるかもしれませんsomething

関連情報