2015-06-05 52 views
0

==的值不是运算符,而是内置过程。PostScript ==运算符

PLRM第526页(pdf第540页)。

内置程序,这意味着这是PostScript过程:

{ something here } 

或例如实际的功能在Java中,你必须定义自己?

回答

4

你可以用/== load ==来看看ghostscript的实现。

或得到这本书内部Postscript通过Frank Meritt Braswell。它有关于==过程如何在Adobe的打印机实现中工作的完整章节。

但是简单的框架是基于运算符type的属性,它产生一个类型名。更具体地说,它产生一个可执行文件名称,它指定参数的类型。所以你可以很容易地用字典实现一个类型切换。

<< 
    /integertype { } % handle integer case 
    /realtype { } % handle floating-point case 
    /arraytype { } % handle array case 
>> begin 
5 type exec 
2.0 type exec 
{a b c} type exec 

不同类型的对象会导致不同的过程被执行。

使用这个,我们可以处理可能传递给过程的不同类型。

/my== { 
    << 
    /integertype { =string cvs print } 
    /realtype { =string cvs print } 
    /arraytype { dup xcheck { 
         ({) print {my==} forall (}) print 
        }{ 
         ([) print {my==} forall (]) print 
        } } 
    >> begin dup type exec 
} def 

=string(书中所描述)是用于此确切的目的所使用的===程序预分配128字节的临时缓冲区:提供参数给cvs

+0

谢谢,我刚刚订购了这本书。 – juFo

0

这是一个程序。

我不说Java,但是在PostScript中,如果它的可执行文件不是它的操作符(语言的一部分),那么你必须自己定义它。

注意,在PostScript中,也可以重新定义运营商,所以只是因为它有一个运营商的名称,并不意味着它运营商,但它仍然可能是一个过程。

+0

这样'内置程序'实际上是systemdict中的postscript程序吗? – juFo

+0

它是一个PostScript过程,而不是操作符,我不确定它是在systemdict中定义的,因为我现在正在旅行,所以我没有PLRM。 – KenS