LOTUSSCRIPT LANGUAGE
When you create an instance of a class, you must explicitly declare an object reference variable. That is, you create the object, create the object reference variable, and assign an object reference to the variable.
The object reference points to the object. When an object is created, its member variables are initialized, each to the initial value for the data type of the member. For example, a member of data type Integer is initialized to 0. If a member is itself a user-defined data type or a class, it is initialized by initializing its member variables.
You can create an object reference without creating an object with the following syntax:
Dim x As ClassName
Because the variable you declare contains a reference to an object that does not yet exist, the variable is initialized to the value NOTHING.
Creating objects
After defining a class, you create and assign objects using the LotusScript New keyword.
Dim objRef As New className[(argList)]
Set objRef = New className[(argList)]
In this example, X can hold only references to Demo objects, or else the value NOTHING. It is initialized to 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
LotusScript initializes each element of DemoArray to NOTHING. However, since a list has no elements when it is declared, LotusScript does not initialize the elements in DemoList. Each element of DemoArray, and each element of DemoList, when created, can hold either the value NOTHING or a reference to a Demo object, for example:
Set DemoArray(0) = New Demo
Using the Set statement
The Set statement is an assignment statement used only to assign values (object references) to object reference variables. You cannot use any other a to assign values to object reference variables.
You can assign a reference to a newly created object to an array element or a list element.
Continuing from the previous example:
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
You can assign an existing object reference to another variable using the Set statement without the New keyword.
For example:
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
An assignment using Set does not copy an object. The assigned value is a reference to an object, not the object itself. The value stored in an object reference variable is a pointer to the data that makes up the object. Set copies the reference into the target variable.
Using Variants to hold object references
You can assign an object reference to a variable of type Variant.
In the following script, the variable anyFruitV holds a reference to Fruit objects and is of type Variant. The script executes when the user clicks a Notes button.
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
Language cross-reference
Testing object references in LotusScript language
See Also