ボンジュール・マドモアゼル

本サイトの情報は自己責任にてご利用下さい。

[PostScript] PostScript bindオペレータ

 
bind オペレータは、手続きを引数として取り、その手続き内の演算名を実際の演算処理に置換し、戻り値として、その置換した手続きをスタックにプッシュする。言い換えれば、手続き内の演算子を演算オブジェクトに結合する。
結合対象となる名前は、再定義(オーバライド)されていない add や sub などの演算名である。

PostScript では、演算子と同一の名前を持つ手続きを定義できることから、通常の手続きの呼び出しでは、演算子に対しても、カレント辞書スタックで名前検索が行なわれる。
しかし、bind 定義された手続きは、もはや演算子を含まないので、実行時、演算子の名前検索は実施されない。その分、効率的である。

なお、early binding とは静的名前解決のこと。対義語として、late binding というのがあり、これは実行時の名前解決を意味する。
early binding の日本語訳は直訳は「早期結合」だが「事前バインディング」、が一般的のようだ。一方、late binding は直訳は「遅延結合」、一般的には「実行時バインディング」という。

以下、PostScript Language Reference, third edition
http://www.adobe.com/products/postscript/pdfs/PLRM.pdfより.

The bind operator first systematically replaces names with operators in a procedure. For each executable name whose value is an operator (not an array, procedure, or other type), it replaces the name with the operator object. This lookup occurs in the dictionaries that are on the dictionary stack at the time bind is executed.
bind オペレータは、先ず体系的に、手続きの中の名前を演算に変換します。
値が演算(配列、手続き、その他の型ではない)である実行可能な名前に対して、名前を演算に変換します。この検索は、辞書スタックにある辞書のなかで、bind を実行した時に実施されます。

The effect of bind applies not only to the procedure being bound but to all subsidiary procedures (executable arrays or executable packed arrays) contained within it, nested to arbitrary depth.
bind の効果は、そのbindされている手続きだけではなく、その手続き内に含まれる任意の深さに入れ子にされた副次的な手続き(実行可能な配列、実行可能なpacked配列)にまで適用されます。

次回へ続く.
<<PostScript 入門 | ホーム | PostScript bindオペレータ Cnt'd>>

コメント

コメントの投稿

管理者にだけ表示を許可する

画像の文字を半角数字で下記ボックスに記入ください。
文字が読みにくい場合はブラウザの更新をすると新しい文字列が表示されます。