LOTUSSCRIPT 言語
クラスのインスタンスを作成する場合、オブジェクト参照変数を明示的に宣言する必要があります。つまり、オブジェクトとオブジェクト参照変数を作成して、オブジェクト参照を変数に割り当てます。
オブジェクト参照はオブジェクトを指し示します。オブジェクトが作成されると、そのメンバ変数はメンバのデータ型の初期値にそれぞれ初期化されます。たとえば、Integer 型のメンバはゼロに初期化されます。メンバ自体がユーザー定義のデータ型またはユーザー定義のクラスの場合、そのメンバ変数を初期化することにより初期化されます。
オブジェクトを作成しなくても、次の構文を使用してオブジェクト参照を作成できます。
Dim x As ClassName
宣言する変数がまだ存在しないオブジェクトへの参照を含んでいるため、変数は値 NOTHING に初期化されます。
オブジェクトを作成する
クラスを定義した後で、LotusScript の New キーワードを使用してオブジェクトを作成し、値を割り当てます。
Dim objRef As New className[(argList)]
Set objRef = New className[(argList)]
次の例では、X は Demo オブジェクトへの参照だけを保持でき、それ以外の場合は値 NOTHING になります。NOTHING に初期化されます。
Class Demo ' ... End Class
' Declare an object reference variable X of the class ' Demo, create an instance of that class, and assign X ' a reference to the new Demo object. Dim X As New Demo
Dim DemoArray(10) As Demo ' Array of object reference variables Dim DemoList List As Demo ' List of object reference variables
DemoArray の各要素は NOTHING に初期化されます。ただし、リストは宣言されたときには要素を持たないため、DemoList の要素は初期化されません。DemoArray の各要素と DemoList の各要素は、作成されると、値 NOTHING か Demo オブジェクト参照のいずれかを保持できます。たとえば次のようになります。
Set DemoArray(0) = New Demo
Set ステートメントを使用する
Set ステートメントは値 (オブジェクト参照) をオブジェクト参照変数に割り当てるだけのために使用される代入ステートメントです。その他のステートメントでは、オブジェクト参照変数に値を割り当てることはできません。
新しく作成されたオブジェクトへの参照を、配列要素またはリスト要素に割り当てることもできます。
次の例は、前の例の続きです。
Dim Z(10) As Demo ' Declare an array of object reference variables.
Dim A List As Demo ' Declare a list of object reference variables.
Set Z(1) = New Demo ' Assign Z(1) a reference to the created object.
'Assign a list element a reference to the created object. Set A("ITEM01") = New Demo
New キーワードなしの Set ステートメントを使用して、既存のオブジェクト参照を別の変数に割り当てられます。
以下に例を示します。
Class Customer ' ... End Class ' Declare object reference variable C, create a Customer' object, and assign C a reference to the new Customer object. Dim C As New Customer ' Declare object reference variable myArray and initialize ' all elements of MyArray to NOTHING. Dim myArray(10) As Customer Dim dTwo As Customer ' Object reference is set to NOTHING. Set dTwo = myArray(1) ' Assign the myArray(1) value, NOTHING, to DTwo. Set myArray(1) = C ' myArray(1) and C refer to the same Customer. Set dTwo = myArray(1) ' Now dTwo also refers to the same Customer. Set myArray(1) = NOTHING ' Set the object reference to NOTHING. ' Assign myArray(1) a reference to a new Customer object. Set myArray(1) = New Customer ' Assign dTwo a reference to a new customer object. ' Now, variables C, myArray(1), and dTwo each refer to ' different Customer objects. Set dTwo = New Customer
Set を使用した割り当てではオブジェクトはコピーされません。割り当てられた値は、オブジェクト自体ではなくオブジェクトへの参照です。オブジェクト参照変数に格納された値は、オブジェクトを構成するデータへのポインタです。Set は参照をターゲットの変数にコピーします。
Variant 型を使用してオブジェクト参照を保持する
オブジェクト参照を Variant 型の変数に割り当てられます。
次のスクリプトでは、変数 anyFruitV は Fruit オブジェクトへの参照を保持し、データ型は Variant 型です。スクリプトはユーザーが Lotus Notes のボタンをクリックすると実行されます。
Class Fruit Sub PrintColor MessageBox ("I have no color.") End Sub End Class
Class Banana As Fruit Sub PrintColor MessageBox ("I'm yellow.") End Sub End Class Class Grape As Fruit Sub PrintColor MessageBox ("I'm purple.") End Sub End Class
Sub Click(Source As Button) ' Sample Notes product object. Dim myFruit As New Fruit Dim myBanana As New Banana Dim myGrape As New Grape Dim anyFruitV As Variant Set anyFruitV = myFruit anyFruitV.PrintColor Set anyFruitV = myBanana anyFruitV.PrintColor Set anyFruitV = myGrape anyFruitV.PrintColor End Sub
クロスリファレンス
LotusScript 言語の Testing オブジェクト参照
関連項目