Isi semua elemen dari array METAPOST

Aug 30 2020

Saya ingin mengisi jalur array dengan panjang arbitrase menggunakan loop. Apakah ada cara untuk mengulang operator pengisian pada setiap elemen array, sesuatu yang setara dengan loop shell ini

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

Larik AFAIU METAPOST bukanlah larik klasik, jadi saya tidak tahu apakah ini bisa dicapai. Apa yang saya lakukan sejauh ini terlihat seperti MWE ini. Bekerja sejauh ini, karena array jalur saya tidak tumbuh menjadi lebih dari sepuluh elemen, tetapi jika berhasil, saya mungkin mengabaikan bahwa ada sesuatu yang belum diisi. Memeriksa panjang array adalah hal yang ingin saya hindari.

\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

Jawaban

1 mickep Aug 30 2020 at 19:41

Anda bisa mencoba 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