我正在尝试检查堆栈顶部的数字是偶数还是奇数而不影响我的堆栈,因为我在递归函数中使用它。我也尝试加倍弹出,但这段代码仍然混淆了这个功能。
dup 2 0 mod eq
{ 0 0 0 setrgpcolor}
{0.6 0.6 0.6 setrgpcolor}ifelse
pop
答案 0 :(得分:3)
你的参数顺序错了。一次一步(假设顶部堆栈编号为123
):
123
dup 2 0 mod eq
执行dup
:
123 123 2 0 mod eq
在mod
(!)
2 0
123 123 --undefined-- eq
并且eq
太少,太晚了......
交换2个操作数以获得正确的结果:
dup 2 mod 0 eq
{ .. number is even ..}
{ .. number is odd ..} ifelse
(注:
setrgpcolor
是拼写错误,还是真的有一个名为so的颜色模型?)