PostScript блуждает по словарям
Согласно PLRM, не имеет значения, в каком порядке вы выполняете обман на диктанте:
(стр. 597) forall помещает ключ и значение в стек операндов и выполняет процедуру для каждой пары ключ-значение в словаре
...
(стр. 597) Порядок, в котором forall перечисляет записи в словаре, является произвольным. Новые записи, помещенные в словарь во время выполнения процедуры, могут включаться или не включаться в перечисление. Существующие записи, удаленные из словаря через proc, не будут встречаться позже в перечислении.
Теперь я выполняю некоторый код:
/d 5 dict def
d /abc 123 put
d { } forall
Мой вывод (стек операндов):
--------top-
/abc
123
-----bottom-
Вывод ghostscript и PLRM (стек операндов):
--------top-
123
/abc
-----bottom-
- Неужели не имеет значения, в каком порядке вы обрабатываете пары ключ-значение из dict?
- в стеке сначала нужно нажать значение, а затем клавишу, или сначала нужно нажать клавишу? (поскольку PLRM говорит только о "ключе и значении", но ничего не говорит вам о заказе).
заранее спасибо
1 ответ
Вероятно, будет полезно, если вы процитируете номер страницы, когда вы цитируете разделы из PLRM, трудно понять, откуда вы это взяли.
При выполнении полного порядка перечисления пар словаря произвольно, вы не имеете никакого влияния на него. Тем не менее, всегда нажимает клавишу, а затем значение. Даже если это подразумевается в тексте, который вы (не совсем) цитировали, вы можете увидеть из примера в операторе forall, что это случай.
когда вы говорите "мой вывод", вы имеете в виду, что пишете свой собственный интерпретатор PostScript? Если это так, то ваш вывод неверен, при нажатии пары ключ / значение сначала нажимается клавиша.