В соответствии с PLRM это не имеет значения, в каком порядке вы выполняете FORALL на Dict:PostScript FORALL на словарях
(стр. 597) FORALL выталкивает ключ и значение в стек операндов и выполняет прок для каждой пары ключ-значение в словаре
...
(стр. 597) порядок, в котором FORALL перебирает записи в словаре произвольно. Новые записи, помещенные в словарь во время выполнения proc, могут быть включены или не включены в перечисление. Существующие записи, удаленные из словаря proc, не будут встречаться позже в перечислении.
Теперь я выполнял код:
/d 5 dict def
d /abc 123 put
d { } forall
Мой вывод (стек операндов) является:
--------top-
/abc
123
-----bottom-
Выход Ghostscript и PLRM (стек операндов) является:
--------top-
123
/abc
-----bottom-
- D oes действительно не имеет значения, в каком порядке вы обрабатываете пары ключ-значение dict?
- в стеке, вам сначала нужно нажать значение, а затем клавишу, или вам нужно сначала нажать клавишу? (поскольку PLRM говорит только о «ключе и значении», но не сообщает вам ничего о заказе).
Заранее спасибо
Я добавил номер страницы. Из текста, который я видел, мне было непонятно. «ключ и значение в стеке операндов». на самом деле не говорит, что это всегда первый ключ. Примером может служить пример, когда ключ был первым, но не говорит о том, возможно ли значение в первую очередь или нет. Это «глупые» детали, но я хочу быть на это 100% уверен, поэтому вопрос. Да, я работаю над своим собственным переводчиком :) – juFo
Ну, удачи в этом, его мамонтовая задача ...... Может быть, вам следует сотрудничать с Luser droog. FWIW всякий раз, когда операция словаря приводит к парам в стеке, ключ всегда нажимается первым. – KenS
Я видел, что Luser droog также занят некоторыми постскриптумами, основываясь на его ответах здесь на SO :-) – juFo