型拡張メソッド
Jetbrains.mps.baseLanguage.extensionMethods 言語は、Java の静的メソッドに似た、新しく定義されたメソッドまたはオーバーライドされたメソッドを使用して有効な MPS 型を拡張する方法を提供します。
静的メソッドは拡張クラスの内部部分になることはなく、拡張メソッドのパラメーターの 1 つとして操作する「拡張」オブジェクトを常に指定する必要がありますが、拡張メソッドでは、新しいメソッドがターゲット型で使用可能な操作のリストに直接追加されます。
古き良き「静的メソッド」の方法ではなく、文字列型に逆メソッドを追加したい場合は、次のようになります。
New-> jmbaseLanguage.extensionMethods/type extension を使用して新しい拡張メソッドを作成し、新しいメソッドを定義して文字列クラスに関連付けます。
まったく同じメカニズムを使用して、既存のメソッドをオーバーライドできます。そして、元のメソッドを呼び出す必要がある場合は、これで呼び出すだけです:
MPS は、拡張メソッドメカニズムを介して元のメソッドとオーバーライドされたメソッドを視覚的に区別するのに適しているため、ドロップダウンリストから正しいメソッドを選択するのを間違えることはありません。
明らかに、このメカニズムを使用して、独自のドメインオブジェクトに直交概念を実装することもできます。
上記の宣言を使用すると、タイプ my_type で操作を記述できます。
ルートノード
メソッドを使用して型を拡張するには、同様に 2 つの優れた方法があります。タイプの拡張を使用すると、1 つの場所で単一の型にメソッドを追加できますが、Simple Extension Method Container は、複数の異なる型の直交概念を実装するために 1 つの場所が必要な場合に便利です。
タイプの拡張
このルートには単一型の拡張メソッドの宣言が含まれています。
拡張メソッド宣言
単純拡張メソッドコンテナー
拡張メソッド宣言ターゲットタイプはメソッドごとに指定されます。
宣言部 | 許可された内容 |
---|---|
containerName | 任意の有効な識別子 |
extendedType | 任意の有効な MPS タイプ |
両方の根は 1 つ以上の静的フィールドを含むことができます。これらはコンテナー内のすべてのメソッドで利用可能です。