Füllen Sie alle Elemente eines METAPOST-Arrays

Füllen Sie alle Elemente eines METAPOST-Arrays

Ich möchte Pfade von Arrays beliebiger Länge mithilfe einer Schleife füllen. Gibt es eine Möglichkeit, den Fülloperator für jedes Array-Element zu iterieren, etwas, das dieser Shell-Schleife entspricht?

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

Soweit ich weiß, sind METAPOST-Arrays keine klassischen Arrays, daher weiß ich nicht, ob das erreicht werden kann. Was ich bisher mache, sieht aus wie dieses MWE. Funktioniert bisher, da meine Pfad-Arrays nicht auf mehr als zehn Elemente angewachsen sind, aber wenn das passiert, übersehe ich vielleicht, dass etwas nicht ausgefüllt wurde. Ich möchte vermeiden, die Array-Längen zu überprüfen.

\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

Antwort1

Du könntest es versuchen 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

verwandte Informationen