関数を定義する

関数を定義するときは、関数の先頭部、およびアプリケーションがその関数を呼び出したときに実行されるステートメント一式を定義します。

関数を定義するための構文は、次のとおりです。

[ Static ] [ Public | Private ] Function functionName [ ( parameters ) ][ As dataType ]

statements

要素

説明

Static

関数内で定義される変数は、既定で静的であると宣言します。静的変数は、それが定義されたモジュールがロードされている間は、関数の 1 つの呼び出しから次の呼び出しまでの間、その値が (消滅するのではなく) 保持されます。

Public、Private

関数をモジュールレベルで宣言する場合、Public を使用すると、関数が定義されているモジュールがロードされている限り、アプリケーションはそのモジュールの外部で関数を参照できます。Private を使用すると、関数はそれが定義されているモジュールの中でだけ有効です。ユーザー定義クラスの定義内で関数を宣言する場合、Public は関数がクラス定義の外でも有効であることを意味します。Private は、関数がクラス定義の内側でだけ有効であることを意味します。既定では、モジュールレベルで定義された関数は Private で、クラス内で定義された関数は Public です。

functionName

関数の名前で、後ろに LotusScript® のデータ型の接尾辞 (%、&、!、#、@、$) を付けられます。これらの接尾辞によって、関数の戻り値のデータ型が決まります。関数名にデータ型の接尾辞を付けることができるのは、関数の宣言時に As dataType 節を含めない場合だけです。

parameterList

関数の正式なパラメータをカンマで区切りカッコで囲んだリスト (パラメータが存在する場合) です (リストは空にすることもできます)。このリストは、関数が呼び出されたときに、関数に渡される変数を宣言します。リストの各メンバの形式は、次のとおりです。

[ByVal] paramName [() | List] [As dataType]

ByVal は、paramName が値渡しされることを意味します。paramName に代入された値は、その値へのポインタではなく、メモリ内の値のローカルコピーです。ByVal はオプションです。

paramName() は引数の変数です。

List は paramName がリスト変数であることを示します。List の指定がなければ、paramName は LotusScript がサポートする任意のデータ型の変数にできます。配列、リスト、オブジェクト参照、ユーザー定義のデータ型の構造体は、値渡しすることはできません。

As dataType は変数のデータ型を指定します。この節を省略して、データ型の接尾辞を使用して変数をスカラーデータ型の 1 つとして宣言することもできます。この節を省略し、paramName の末尾にデータ型の接尾辞を付けなければ (同時に、既存の Deftype ステートメントで処理されなければ)、データ型は Variant 型となります。

As dataType

関数の戻り値のデータ型を指定します。関数は、スカラー値、Variant 型、またはオブジェクト参照を返すことができます。この節を含める場合、functionName の後ろにデータ型の接尾辞を付けることはできません。この節を省略したときに、functionName の後ろにデータ型の接尾辞が付いていない場合 (および functionName が既存の Deftype ステートメントでカバーされていない場合)、データ型は Variant 型です。

LotusScript 4.0 以前のリリースでは、関数は参照される前に宣言しておく必要がある場合がありました。これは LotusScript 4.0 で不要になりました。参照に先立って LotusScript 関数を宣言しておくことはできますが、それは無視されます。

プロパティの宣言の構文は次のとおりです。

Declare [ Static ] [ Public | Private ] Function functionName [ ( parameterList ) ][ As dataType ]