根据 PLRM,在 dict 上执行 forall 的顺序无关紧要:
(第 597 页)forall 将一个键和一个值压入操作数堆栈,并为字典中的每个键值对执行 proc
...
(p. 597) forall 枚举字典中条目的顺序是任意的。proc 执行期间放入字典的新条目可能包含在枚举中,也可能不包含在枚举中。proc 从字典中删除的现有条目将不会在枚举的后面遇到。
现在我正在执行一些代码:
/d 5 dict def
d /abc 123 put
d { } forall
我的输出(操作数堆栈)是:
--------top-
/abc
123
-----bottom-
ghostscript 和 PLRM(操作数栈)的输出是:
--------top-
123
/abc
-----bottom-
- 处理字典的键值对的顺序真的不重要吗?
- 在栈上,是先压入值再压入键,还是先压入键?(因为 PLRM 只谈论“一个键和一个值”,但没有告诉你任何关于订单的信息)。
提前致谢