附言中的这条指令是什么意思?
What does mean this instruction in postscript?
我是这门语言的新手,但我不明白后记中的这条指令是什么意思。
我很熟悉波兰语表示法,但这条指令对我来说仍然没有意义。
/doStartGroupFile where { pop doStartGroupFile } if
有人可以帮助我吗?
提前致谢。
不难。 where
运算符在 PostScript 语言参考手册的第 718 页上进行了描述。它采用单个参数,堆栈中的 'key' 并在字典堆栈中搜索所有当前字典(从最顶层或当前字典开始)以查找包含该键的字典。
如果找到包含该键的字典,它会将对字典的引用压入操作数堆栈,然后将布尔值 'true' 压入操作数堆栈。
如果找不到包含键的字典,它会在操作数堆栈上压入一个布尔值 'false'。
因此 /doStartGroupFile where
查找包含键 '/doStartGroupFile' 的字典是否存在
下一个元素(从“{”到“}”)是一个可执行数组,因此我们只需将其打包并放入操作数堆栈。
因此,根据 'where 运算符的结果,操作数堆栈将包含:
{} true
-dict-
或:
{} false
接下来是 if
运算符,您可以在 PLRM 的第 607 页找到它的定义。 if
运算符使用操作数堆栈中的两个操作数,一个过程和一个布尔值。
如果布尔值为真,则执行程序,如果为假,则简单地丢弃它。
因此,如果找到 'doStartGroupFile',我们将执行该过程,否则,我们将丢弃它。假设在我们执行该过程时找到了操作数堆栈,将只包含对我们找到 doStartGroupFile 的字典的引用。
该过程声明为 {pop doStartGroupFile}
,它首先从操作数堆栈中删除顶部元素(因此它丢弃对字典的引用),然后解析 doStartGroupFile。不知道 doStartGroupFile 是什么,但我猜它是在其他地方定义的可执行过程。
所以总而言之,代码片段搜索 'doStartGroupFile' 的定义,如果找到它就执行它,否则什么也不做。
简单 :-)
我是这门语言的新手,但我不明白后记中的这条指令是什么意思。
我很熟悉波兰语表示法,但这条指令对我来说仍然没有意义。
/doStartGroupFile where { pop doStartGroupFile } if
有人可以帮助我吗?
提前致谢。
不难。 where
运算符在 PostScript 语言参考手册的第 718 页上进行了描述。它采用单个参数,堆栈中的 'key' 并在字典堆栈中搜索所有当前字典(从最顶层或当前字典开始)以查找包含该键的字典。
如果找到包含该键的字典,它会将对字典的引用压入操作数堆栈,然后将布尔值 'true' 压入操作数堆栈。
如果找不到包含键的字典,它会在操作数堆栈上压入一个布尔值 'false'。
因此 /doStartGroupFile where
查找包含键 '/doStartGroupFile' 的字典是否存在
下一个元素(从“{”到“}”)是一个可执行数组,因此我们只需将其打包并放入操作数堆栈。
因此,根据 'where 运算符的结果,操作数堆栈将包含:
{} true -dict-
或:
{} false
接下来是 if
运算符,您可以在 PLRM 的第 607 页找到它的定义。 if
运算符使用操作数堆栈中的两个操作数,一个过程和一个布尔值。
如果布尔值为真,则执行程序,如果为假,则简单地丢弃它。
因此,如果找到 'doStartGroupFile',我们将执行该过程,否则,我们将丢弃它。假设在我们执行该过程时找到了操作数堆栈,将只包含对我们找到 doStartGroupFile 的字典的引用。
该过程声明为 {pop doStartGroupFile}
,它首先从操作数堆栈中删除顶部元素(因此它丢弃对字典的引用),然后解析 doStartGroupFile。不知道 doStartGroupFile 是什么,但我猜它是在其他地方定义的可执行过程。
所以总而言之,代码片段搜索 'doStartGroupFile' 的定义,如果找到它就执行它,否则什么也不做。
简单 :-)