型拡張メソッド
Jetbrains.mps.baseLanguage.extensionMethods 言語は、Java の静的メソッドに似た、新しく定義されたメソッドまたはオーバーライドされたメソッドを使用して有効な MPS 型を拡張する方法を提供します。
静的メソッドは拡張クラスの内部部分になることはなく、拡張メソッドのパラメーターの 1 つとして操作する「拡張」オブジェクトを常に指定する必要がありますが、拡張メソッドでは、新しいメソッドがターゲット型で使用可能な操作のリストに直接追加されます。
古き良き「静的メソッド」の方法ではなく、文字列型に逆メソッドを追加したい場合は、次のようになります。
New-> jmbaseLanguage.extensionMethods/type extension を使用して新しい拡張メソッドを作成し、新しいメソッドを定義して文字列クラスに関連付けます。
まったく同じメカニズムを使用して、既存のメソッドをオーバーライドできます。そして、元のメソッドを呼び出す必要がある場合は、これで呼び出すだけです:
Since MPS does a good job of visually distinguishing original and overridden methods through the extension methods mechanism, you can't make a mistake picking the right one from the drop-down list.

明らかに、このメカニズムを使用して、独自のドメインオブジェクトに直交概念を実装することもできます。
上記の宣言を使用すると、タイプ my_type で操作を記述できます。
ルートノード
There are two equally good ways to extend types with methods. Type Extension allows you to add methods to a single type in one place, while Simple Extension Method Container comes in handy, when you need one place to implement an orthogonal concept for multiple different types.
タイプの拡張
このルートには単一型の拡張メソッドの宣言が含まれています。
拡張メソッド宣言
単純拡張メソッドコンテナー
拡張メソッド宣言ターゲットタイプはメソッドごとに指定されます。
宣言部 | 許可された内容 |
|---|---|
containerName | 任意の有効な識別子 |
extendedType | 任意の有効な MPS タイプ |
両方の根は 1 つ以上の静的フィールドを含むことができます。これらはコンテナー内のすべてのメソッドで利用可能です。