Заполнить все элементы массива METAPOST

Заполнить все элементы массива METAPOST

Я хотел бы заполнить пути массивов произвольной длины с помощью цикла. Есть ли способ итерировать оператор заполнения для каждого элемента массива, что-то эквивалентное этому циклу оболочки

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

Массивы AFAIU METAPOST не являются классическими массивами, поэтому я не знаю, можно ли этого достичь. То, что я делаю до сих пор, выглядит как этот MWE. Пока работает, так как мои массивы путей не выросли более чем до десяти элементов, но если бы это произошло, я мог бы упустить, что что-то не заполнено. Проверки длины массивов — это то, чего я хотел бы избежать.

\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

Связанный контент