LOTUSSCRIPT 言語
保護された変数を操作するために使われる 1 組の関数で、アプリケーションが直接アクセスできないユーザー定義のクラスの Private メンバです。
A sub or function that performs operations on objects.
次の Stack クラスは、いくつかのプロパティとメソッドを使って、スタックデータ構造体に関して単純な push および pop 操作を実行します。
Class Stack Private idx As Integer Stack List As Variant Public stackName As String Private Sub CheckStack ' Sub is visible only within ' the class. If idx% = 0 Then Error 999 End Sub
Sub New idx% = 0 ' Initialize idx. End Sub Private Property Set topValue As Variant CheckStack Stack(idx%) = topValue ' Set the top value on the stack. End Property Private Property Get topValue As Variant CheckStack topValue = Stack(idx%) ' Get the top value on the stack. End Property ' Same as Get for topValue. Function Top Top = topValue ' Call the topValue Get method. End Function Sub Push(v) ' Push a value on the stack. idx% = idx%+1 topValue = v End Sub Function Pop ' Pop a value off the stack. Pop = topValue Erase Stack(idx%) idx% = idx%-1 End Function ' Read-only property.There is no Set for Count. Property Get Count Count = idx% ' Count the values on the stack. End Property End Class Dim St As New Stack Call St.Push("An item on the stack") Call St.Push("Another item on the stack") Print "# of items on the stack is ";St.Count Print "TopValue is ";St.Top
Sub New および Sub Delete を宣言する (オブジェクトの初期化と削除) クラス定義の中で、2 つの特別なサブルーチンを作成できます。2 つとも常に Public です。Private として宣言することはできません。
オブジェクトが作成されるときに自動的に実行されるサブルーチンです。Sub New は New キーワードの付いた Dim ステートメントが実行されるとき、または Sub New が定義されたクラスを参照する Set ステートメントが参照されるときに実行されます。New という名前のサブルーチンとパラメータを定義することにより Sub New を作成し、新たに作成されたオブジェクトを初期化します。1 つのクラスが持つことのできる Sub New は 1 つだけです。
このサブルーチンが定義されたクラスのオブジェクトが削除されるときに自動的に実行されるサブルーチンです。パラメータを指定せずに Delete という名前でサブルーチンを定義することにより、Sub Delete を作成します。1 つのクラスが持つことのできる Sub Delete は 1 つだけです。
次のスクリプト内の Sub New は、CustomerAccount オブジェクトのメンバ変数を初期化します。新規 Account オブジェクトを作成する Set ステートメントは、Account クラス用の Sub New で必要とする 3 つのパラメータも渡します。Sub New は新たに作成されるオブジェクトの 3 つのメンバ変数 (balance@、acctNum&、customerNum$) に引数の値を代入します。
Class Account balance As Currency acctNum As Long customerNum As Long
' Declare Sub New. Sub New (newBal As Currency, newAcctNum As Long, _ newCustNum As Long) balance@ = newBal@ acctNum& = newAcctNum& customerNum& = newCustNum& Print "New Parms=";balance@, acctNum&, customerNum& End Sub
' Declare Sub Delete. Sub Delete Print "Deleting account record for customer:";customerNum End Sub
End Class '..... Dim CustomerAccount As Account
' Create the object. Set customerAccount = New Account(1234.56, 10001991, 5412) Delete customerAccount ' Explicitly delete the object.
関連項目