考虑以下代码:
beginfig(1);
i:=0;
forever:
if odd i:
show(i);
exitif true;
fi
i:=i+1;
endfor
endfig;
end
当我运行它时,我得到了(end occurred when if on line 13 was incomplete)
。
有没有什么办法可以关闭这些消息?
答案1
可能有更好的方法,但与 TeX 中的条件类似,一种方法是确保在执行fi
之前展开exitif
。例如
beginfig(1);
i:=0;
forever:
if odd i:
show(i);
expandafter exitif expandafter true expandafter;
fi
i:=i+1;
endfor
endfig;
end
或者
beginfig(1);
i:=0;
forever:
if odd i:
show(i);
scantokens "fi"
exitif true;
fi
i:=i+1;
endfor
endfig;
end
在第二个版本中,当条件为假时scantokens
隐藏第一个fi
,而当条件为真时执行第一个,并fi
跳过第二个。