<< Click to Display Table of Contents >> マニュアル > スクリプトガイド > スクリプトVer2(SC2構文) > ユーザー定義関数 |
ユーザ定義関数
ユーザー定義関数とは、開発者が独自に作成することができる関数のことです。
ユーザー定義関数はオブジェクト毎に記述することができます。オブジェクトに記述した関数は、メソッドやプロパティと同じように他のオブジェクトから絶対パス参照 又は 相対パス参照によって呼び出して実行する事ができます。
ユーザー定義関数はfunctionキーワードの後に関数名を書き、「( )」の中に引数を「,」(カンマ)区切りで定義します。関数名や引数名は自由に名前が付けられます。そして、「return」キーワードで関数を終了させて、返値を返すことができます。
以下は、ユーザー定義関数の記述例です。
function Total(a, b) { return a + b; }
この例の場合、関数名は「Total」です。aとbという2つの引数を渡すと、「a+b」の計算結果を返値として返します。
ユーザ定義関数の構文
ユーザー定義関数の構文は以下のとおりです。
function FunctionName(<パラメータ1>, <パラメータ2>, …<パラメータn>) { <スクリプト> return <返値>; } |
1)パラメータは必要な数だけ指定する事ができます。
2)パラメータが必要ないときは省略可能ですが、関数名の後の「()」は付ける必要があります(「function FunctionName()」などとします)。
3)returnキーワードは関数を終了させて、呼び出し元に対して返値をかえす事ができます。
4)returnの返値は省略することも可能です。返値を省略した場合、関数は「return」の位置で終了します。
5)returnキーワードはスクリプト中、何個でも書くことができます。また、return自体を書かないこともできます。そのような場合、関数は最後までスクリプトを実行した時点で終了します。
例)returnが無い場合
function SampleFunction() { //<スクリプト> }
function Total(a, b) { return a + b; }
function ErrMessage(a) { switch (a) { case 1: return "Error1"; case 2: return "Error2"; case 3: return "Errro3"; } return "Not Found Error code"; }
6)パラメータの先頭に「&」を付けて記述することにより、パラメータを介して値を返すことができます(参照渡し)。
例)引数に値を返す
function SampleFunction() { var Param; GetParam(Param); //Paramには100が返る。 } function GetParam(&vParam) { vParam = 100; //引数で渡された変数に値を代入。 }
関数の再帰呼び出しには対応しておりません。 |
ユーザ定義関数の命名については、「命名規則」を参照して下さい。 |
ユーザ定義関数の作成例
ここでは、実際にボタンコントロールにユーザー定義関数を作成する例を紹介します。
作成手順は以下のとおりです。
1.フォームにボタンコントロールを貼り付けた後、スクリプトエディタを開いて以下のOnMouseUpイベントを追加してください。
2.OnMouseUpイベントのブランケットの外にユーザー定義関数を記述してください。ここでは、以下の「Total」という関数名とします(記述する場所はOnMouseUpイベントの下あたりでOKです。関数を書く位置はどこでもかまいません)。
function Total(a, b) { return a + b; }
3.OnMouseUpイベントに、Total関数を呼びだす様に記述してください(以下の例は、OpenMsg汎用関数でTotal関数の結果を画面に表示します)。Panel Browserで実行してボタンを押すと、引数で渡した2つの数値の合計がメッセージ表示されればOKです。
event OnMouseUp(button) { ::OpenMsg(Total(2,5)); }
汎用ユーザー定義関数の作成例
ルートオブジェクトに定義したユーザー定義関数のことを、汎用ユーザー定義関数と呼びます。
汎用ユーザー定義関数はシステム全体から利用できる関数です。ルートメソッドと同じように、頭に「::」を付加することにより、どのオブジェクトからも呼び出すことができます。
例として、前述にて作成した「Total」関数をルートオブジェクトにコピーし、以下のように記述します。
//rootのスクリプトに関数を定義 function Total(a, b) { return a + b; }
すると、すべてのスクリプトから以下の要領で呼び出すことが可能となります。
event OnMouseUp(button) { ::OpenMsg( ::Total(2,5) ); //Total左横の「::」はルートのユーザー定義関数であることを示す }
ルートに定義したユーザー定義関数はどのフォームやコントロールからも呼び出すことができるため、システム全体で共有したいユーザー定義関数はルートに定義すると良いでしょう。尚、既にルートメソッドとしてあらかじめ定義されている名前と同名のユーザー定義関数をルートに作成した場合、作成したユーザー定義関数の方が優先的に呼び出されるようになります。 |
ルートのスクリプトを編集したい場合は、ルートオブジェクトを選択後、スクリプトエディタを開きます。 ルートオブジェクトを選択状態にするには、プロパティページのコンボボックスの右にある、以下の矢印アイコンをクリックします。
尚、すでにスクリプトエディタを開いている場合は、上画像アイコンでルートを選択するだけでルートのスクリプトに切り替わります。
|