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 Listparameter をリスト変数として識別します。そうでない場合、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 命令が配列、リスト、またはコレクションを返す場合は、以下の決まりに従ってプロパティへの参照にサブスクリプトを含めることができます。

Set 命令では、プロパティの参照にサブスクリプトを含められません。参照の後に続くカッコでくくられた一覧は、引数の一覧でなければなりません。例えば、p1(1) は、パラメータを 1 つ含むプロパティを表します。p1(1,2)(3) または p1()(3) は、Set 命令では不正となります。

プロパティを関数に引き渡す

LotusScript プロパティ (Property Get か Property Set で定義したプロパティ) は、関数に値渡しできます。参照渡しはできません。