メソッドのキャスト
メソッドのキャスト
あるクラスのメソッドを、別のクラスのメソッドとしてキャストするには、以下のどちらかの構文を使用します (ObjectScript の場合)。
Do ##class(Package.Class1)Class2Instance.Method(Args) Set localname = ##class(Package.Class1)Class2Instance.Method(Args)
クラス・メソッドとインスタンス・メソッドの両方ともキャストできます。
例えば、2 つのクラス MyClass.Up と MyClass.Down が、両方とも Go() メソッドを持つとします。 MyClass.Up の場合は、このメソッドが以下のようになります。
Method Go()
{
Write "Go up.",!
}
MyClass.Down の場合は、Go() メソッドが以下のようになります。
Method Go()
{
Write "Go down.",!
}
ユーザは、MyClass.Up のインスタンスを生成することができ、これを使用して MyClass.Down.Go メソッドを呼び出します。
>Set LocalInstance = ##class(MyClass.Up).%New() >Do ##class(MyClass.Down)LocalInstance.Go() Go down.
以下のように、式の一部に ##class を使用することもできます。
Write ##class(Class).Method(args)*2
変数を、返り値と同じ値に設定する必要はありません。
より一般的な方法は、インスタンスには $METHOD 関数を使用し、クラス・メソッドには $CLASSMETHOD 関数を使用することです。