Preencha todos os elementos de um array METAPOST

Aug 30 2020

Eu gostaria de preencher caminhos de arrays de comprimento arbitral usando um loop. Existe uma maneira de iterar o operador de preenchimento em cada elemento da matriz, algo equivalente a este loop de shell

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

Os arrays AFAIU METAPOST não são arrays clássicos, então não sei se isso pode ser alcançado. O que estou fazendo até agora se parece com este MWE. Funciona até agora, já que minhas matrizes de caminho não cresceram para mais de dez elementos, mas se isso acontecer, posso ignorar que algo não foi preenchido. Verificar os comprimentos das matrizes é o que eu gostaria de evitar.

\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

Respostas

1 mickep Aug 30 2020 at 19:41

Você poderia tentar 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