METAPOST配列のすべての要素を埋める

METAPOST配列のすべての要素を埋める

ループを使用して任意の長さの配列のパスを埋めたいのですが、各配列要素に対してfill演算子を反復処理する方法はありますか?これは、このシェルループと同等のものです。

set -A Test foo bar
for i in ${Foo[@]}; do print $i; done

私の知る限り、METAPOST 配列は古典的な配列ではないので、これが実現できるかどうかはわかりません。私がこれまで行ってきたことは、この MWE のようなものです。パス配列が 10 個以上の要素に増えることはなかったので、これまでのところはうまくいっていますが、増えた場合は、何かが満たされていないことを見落とす可能性があります。配列の長さをチェックすることは避けたいものです。

\mainlanguage[]
\language[]



\starttext
\startMPpage
path T[];

T1:=unitcircle scaled 20;
T2:=unitsquare scaled 20 xshifted 30;
T3:=unitcircle scaled 20 xshifted 80;

for i=1 step 1 until 10:
   if known T[i]:
      draw T[i] ;
   fi
endfor ;
\stopMPpage
\stoptext

答え1

以下を試してみてくださいforever:

\starttext
\startMPpage
path T[];

T1:=unitcircle scaled 20;
T2:=unitsquare scaled 20 xshifted 30;
T3:=unitcircle scaled 20 xshifted 80;

i:=1;
forever:
   if known T[i]:
      draw T[i];
      i:=i+1;
   fi
   exitif unknown T[i];
endfor ;
\stopMPpage
\stoptext

関連情報