掴んだ物(技術)はちゃんと食べる記録帳

興味を持ったものに対する足跡を残していくために作成しました。勉強しながら書いているので、間違いや短絡もあると思います。ご指摘いただけると喜びます。

Let's PostScript(4) 関係オペレータで比較する

関係オペレータ

制御をおこなうためには、2つのObjectを比較評価する必要があるわけで、このような処理を行うオペレータを関係オペレータ(Relational Operator)といいます。 Post Scriptの比較評価結果はtruefalseのみです。

文法は object1 object2 xx となり、2つのObjectの関係を評価します。これは、表にしてしまったほうが分かりやすいかもしれません。

関係オペレータ 処理内容
eq 2つのObjectが等しければOperandStackにtrueを格納する
ne 2つのObjectを等しくなければOperandStackにtrueを格納する
ge 2つのObjectの>=の大小比較を行い、結果をOperandStackに格納する
gt 2つのObjectの>の大小比較を行い、結果をOperandStackに格納する
le 2つのObjectの<=の大小比較を行い、結果をOperandStackに格納する
lt 2つのObjectの<の大小比較を行い、結果をOperandStackに格納する

評価可能なオブジェクトは数値と文字列となります。 文字列は一般的なソートのルールが適用されるようです。また文字列はどのような表現方法で指定しても同じ文字列となれば正しく評価されるようです。

GS>(b) (abc) gt ==
true
GS>(abc) <616263> eq ==
true

本を見ると、eqオペレータとneオペレータは任意のObjectが比較できるようなのですが、配列でやってみたところ、うまくいきませんでした。 このあたりよくわからないので、後日の課題としたいと思います。

GS>[1 2 3] [1 2 3] eq ==
false

次回は、手続きオブジェクトと制御オペレータについてみていきたいと思います。