條件控制:
MetaPost可以使用布林值(boolean),如true, false。配何比較運算<,>, <=,>=, <>,和邏輯運算and, or ,not 等等,就可以形成各種運算結構。
if bool: ... fi
if bool: ... else: ... fi
if bool: ... elseif bool: ... fi
if bool: ... elseif bool: ... else: .... fi 這就像是C的switch-case控制結構。
這是if的例子:
畫角的標示弧線p,檢查二線的角度差的正負值,來決定弧線path的方向。

廻圈控制:
for 變數 =初值 step 變值 until 末值 : ... endfor,例子常見。
for 變數 =初值 upto 末值 : ... endfor,常見。
for 變數 =初值 downto 末值 : ... endfor,常見。
for 變數=任意datatype的值, 變數名稱: 如
for i=a1, "hallow world!", (a,-3.14b), (1,2,3,4,5): show i; endfor
這for 也可以執行。;另外
draw for i=(0,0), (4,2),(-2,-4): i-- endfor cycle;等於
draw (0,0)--(4,2)--(-2,-4)--cycle;
for 變數 within 圖形 : ... endfor,變數內容是圖形型態,用於運算圖形。
forsuffixes 變數 =後綴詞: ...endfor, 可用於合法變數名。如:
forsuffixes i=a1,a2,a.bx:%forsuffixes i=1,2,3.bx;
show str i;%show "a"&str i;
endfor end;
第一種顯示正常,而把前二行用%部分碼取代也能執行,但顯示3.bx的.不見了成為a3bx…
forever: ... exitif (boolean); endfor
forever:... exitunless(boolean); endfor
exif 和 exitunless 的判斷式子可以在for, forever, forsuffixes的廻圈中的任何位置,一旦成立即可跳出廻圈。
還是畫角的弧線

限會員,要發表迴響,請先登入



