関数ブロックと局所変数 (Function blocks and scoped variables)
この版の gnuplot では、標準的な gnuplot コマンドのブロックを呼び出して
関数として使える機能を導入しています。関数ブロックは、0 から 9 個の引
数を使えて、一つの値を返します。関数ブロックは、計算した新しい値を変数
に割り当てたり、異なる関数や演算子を結合したり、与えられたデータに対す
る繰り返しの作業を行ったりするのに使うことができます。
この仕組みには、3 つの要素があります。
以下参照: local, scope, function blocks, return。
- 修飾子 local は、変数や配列のオプション宣言で、そのスコープは、そ
れが書かれているプログラム単位の実行中のみに制限されます。単位とは、 現在は、load や call 文の実行単位、関数ブロック評価、そして if, else, do for, while に続く中かっこで囲まれたコードブロック単位 です。局所 (local) 変数の名前が大域 (global) 変数の名前とぶつかる場 合は、その局所スコープから抜けるまでは大域変数は隠されます。
- コマンド function は、gnuplot コマンドからなる名前付き関数ブロック
(実際はある文字列の配列) を宣言します。関数ブロックを呼び出すと、そ のコマンドが、ブロックの最後になるか、または return コマンドに当た るまで、順次実行されます。
- コマンド return <expression> は、関数ブロックの実行を終了します。
式 <expression> の評価の結果が、その関数の値として返されます。関数ブ ロックの外では、どこでも return は exit と同様に動作します。
この仕組みを使って、単純な一行の関数定義 f(x) = ... よりもっと複雑で
自明ではない関数を定義し、描画する例として、function_block.dem を参
照してください。