Property Get/Set ステートメント (LotusScript 言語)
プロパティを定義します。プロパティは、1 つの変数のように使用できる名前の付いた Get と Set プロシージャの組です。
構文
[ Static ] [ Public | Private ] Property { Get | Set } propertyName [ ( [ paramList ] ) ] [ As type ]
[ statements ]
End Property
要素
Static
オプション。Static プロパティの変数の値がプロパティの呼び出し間で保存されるように指定します。
Public | Private
オプション。Public を指定すると、そのモジュールがロードされている限り、定義されたスコープ (モジュールまたはクラス) の外からでもプロパティを参照できます。Private を指定すると、プロパティは現在のスコープ内でのみ参照できます。
既定では、モジュールスコープ内のプロパティは Private です。既定では、クラススコープ内のプロパティは Public です。
Property Get と Property Set の定義には、同じ Public 設定または Private 設定を使用しなければなりません。
Get | Set
プロシージャで実行される処理を指定します。Property Get プロシージャは、プロパティの値を取り出します。Property Set プロシージャは、値をプロパティに代入します。
propertyName
プロパティの名前。この名前にデータ型の接尾辞を付けて、プロパティに渡されたり戻されたりする値の型を宣言できます。
paramList
オプション。Get と Set 操作でこのプロパティに渡されるパラメータを示す宣言をカンマで区切ったリストです。Get と Set は同じ個数の引数を持たなければなりません。
各パラメータ宣言の構文は次のとおりです。
[ ByVal ] parameter [ ( ) | List ] [ As type ]
ByVal は、parameter が値渡しされることを意味します。parameter に代入された値は、その値へのポインタではなく、メモリ内の値のローカルコピーです。
parameter () は引数の変数です。parameter List は parameter をリスト変数として識別します。そうでない場合、parameter には LotusScript® で使用できる他の任意のデータ型の変数を指定できます。
As dataType は変数のデータ型を指定します。この節を省略し、parameter にデータ型接尾辞を追加して、スカラーデータ型の変数を宣言できます。この節を省略し、同時に parameter にデータ型接尾辞を追加しない場合 (また、既存の Deftype ステートメントで処理されない場合)、データ型は Variant になります。
パラメータ宣言のリスト全体をカッコで囲みます。
type
オプション。プロパティに渡されたり戻されたりする値の型です。
type には任意のスカラーデータ型、Variant 型、またはクラス名を指定できます。
As Type を指定しなければ、値の型はプロパティ名の接尾辞によって決まります。type と接尾辞の両方を同時に指定しないでください。LotusScript がエラーとなります。
type を指定せず、プロパティ名に接尾辞を追加しなければ、プロパティの値は Variant 型または Deftype ステートメントで指定された型になります。
Property Get と Property Set の定義の types は同じでなければなりません。
statements
プロパティの値を取り出したり代入したりするステートメントです。
使用法
Public キーワードは、クラスのメンバを宣言するときを除いて、アプリケーションオブジェクトのスクリプトに直接記述したり、アプリケーションオブジェクトスクリプトの %Include ファイル内で使用することはできません。Public 宣言は (Globals) で使用してください。
通常、プロパティは同じ名前の 2 つのプロシージャ (Property Get と Property Set) から構成されます。ただし、必ず両方が必要なわけではありません。
クラスのプロパティメンバは Static として宣言できません。つまり、クラス定義内の Property Get や Property Set ステートメントを Static で始めることはできません。
Property Get を使用する
Property Get プロシージャは、関数に似ています。例:
' These statements assign the value of saveInt to x
Dim saveInt As Integer
Property Get pInt As Integer
pInt% = saveInt%
End Property
x = pInt%
または:
' These statements assign the value of saveInt plus
' increment to x
Dim saveInt As Integer
Property Get pInt (increment As Integer) As Integer
pInt% = saveInt% + increment%
End Property
x = pInt%(1%)
Property Set を使用する
Property Set プロシージャは、Property Get プロシージャの逆です。Property Set プロシージャに入力するときに、Property Set プロシージャと同じ名前と型を持つ暗黙的変数には、Property Set 内で使用される値が格納されます。Property Set 内では、値を変数に代入するのではなく、変数の値を使用します。
代入ステートメントの左辺に名前を指定して Property Set を呼び出します。ステートメントの後にある値は、Property Set プロシージャで使用されます。例:
' These statements assign the value of x to SaveInt
Dim SaveInt As Integer
Property Set pInt As Integer
saveInt% = pInt%
End Property
pInt% = x
または:
' These statements assign the value of x + increment
' to SaveInt
Dim SaveInt As Integer
Property Set pInt (increment As Integer) As Integer
saveInt% = pInt% + increment%
End Property
pInt%(1%) = x
配列、リスト、コレクションを返すプロパティを参照する
Get 命令が配列、リスト、またはコレクションを返す場合は、以下の決まりに従ってプロパティへの参照にサブスクリプトを含めることができます。
- プロパティがパラメータを含む場合は、参照の後に続く最初のカッコでくくられたリストが引数の一覧でなければなりません。カッコで囲まれた 2 番目のリストは、サブスクリプトリストとして扱われます。例えば、p1(1,2)(3) は、2 つのパラメータを持ち、コンテナを返すプロパティ p1 への参照を表します。
- プロパティがパラメータを含まず、戻り値のデータ型が Variant 型かコレクションオブジェクトである場合、参照の後に続く最初のカッコでくくられた一覧は、サブスクリプトリストとして扱われます。例えば、p1(1) は、パラメータを 1 つ含むプロパティ p1、またはプロパティを含まないコンテナであるプロパティ p1 への参照です。
- プロパティがパラメータを含まず、戻り値のデータ型が Variant 型以外でコレクションオブジェクトでもない場合、参照の後にカッコでくくったリストを配置することはできません。ただし、空のリストは 1 つ入れられます。例えば、p1() は、パラメータを含まないプロパティで、コンテナである場合とコンテナでない場合が考えられます。p1 がコンテナであった場合、コンテナ全体が参照されます。
Set 命令では、プロパティの参照にサブスクリプトを含められません。参照の後に続くカッコでくくられた一覧は、引数の一覧でなければなりません。例えば、p1(1) は、パラメータを 1 つ含むプロパティを表します。p1(1,2)(3) または p1()(3) は、Set 命令では不正となります。
プロパティを関数に引き渡す
LotusScript プロパティ (Property Get か Property Set で定義したプロパティ) は、関数に値渡しできます。参照渡しはできません。