Dictionary 所有词典的附言

Dictionary 所有词典的附言,dictionary,postscript,forall,Dictionary,Postscript,Forall,根据PLRM,在dict上执行forall的顺序无关紧要: (第597页)forall在操作数堆栈上推送一个键和一个值,并为字典中的每个键值对执行proc (第597页)forall在字典中列举词条的顺序是任意的。在执行proc期间放入字典的新条目可能包括在枚举中,也可能不包括在枚举中。以后在枚举中将不会遇到由proc从字典中删除的现有条目 现在我正在执行一些代码: /d 5 dict def d /abc 123 put d { } forall 我的输出(操作数堆栈)是: ghostsc

根据PLRM,在dict上执行forall的顺序无关紧要:

(第597页)forall在操作数堆栈上推送一个键和一个值,并为字典中的每个键值对执行proc

(第597页)forall在字典中列举词条的顺序是任意的。在执行proc期间放入字典的新条目可能包括在枚举中,也可能不包括在枚举中。以后在枚举中将不会遇到由proc从字典中删除的现有条目

现在我正在执行一些代码:

/d 5 dict def
d /abc 123 put
d { } forall
我的输出(操作数堆栈)是:

ghostscript和PLRM(操作数堆栈)的输出为:

  • 以什么顺序处理dict的键值对真的无关紧要吗
  • 在堆栈上,您是需要先按值,然后按键,还是需要先按键?(因为PLRM只谈论“一个键和一个值”,但没有告诉您有关订单的任何信息)

  • 提前感谢

    如果您引用PLRM中的章节时引用页码,可能会有所帮助,但很难看出您从何处获得此信息

    执行forall时,forall枚举字典对的顺序是任意的,您对其没有影响。但是forall总是先按键,然后按值。即使您(没有完全)引用的文本中暗示了这一点,您也可以从forall运算符中的示例中看出这是一种情况


    当你说“我的输出”时,你的意思是你在写你自己的PostScript解释器吗?如果是这样,则输出不正确,当按下键/值对时,首先按下键。

    我已添加页码。从我所看到的文本来看,我并不清楚。“操作数堆栈上的键和值”。并不是说它总是第一把钥匙。这个例子可以是这样一个例子,其中key是第一个,但没有说明value first是否也可能。这些都是“愚蠢”的细节,但我想100%肯定这一点,这就是问题所在。是的,我正在做我自己的翻译:)好吧,祝你好运,这是一项艰巨的任务。。。。。。也许你应该和卢瑟·德洛格合作。FWIW每当字典操作在堆栈上产生成对结果时,总是先按下键。我看到Luser droog也在忙着写postscript,根据他的回答,所以:-)@luserdroog你可以删除电子邮件:)@juFo谢谢。还有。
    --------top-
    /abc
    123
    -----bottom-
    
    --------top-
    123
    /abc
    -----bottom-