Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

メソッドのキャスト

メソッドのキャスト

あるクラスのメソッドを、別のクラスのメソッドとしてキャストするには、以下のどちらかの構文を使用します (ObjectScript の場合)。

Do ##class(Package.Class1)Class2Instance.Method(Args)
Set localname = ##class(Package.Class1)Class2Instance.Method(Args)

クラス・メソッドとインスタンス・メソッドの両方ともキャストできます。

例えば、2 つのクラス MyClass.UpMyClass.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 関数を使用することです。これらについては、この章の前述のセクションで説明しています。

FeedbackOpens in a new tab