他の言語
ここでは、いくつかの便利な BaseLanguage 拡張機能を紹介します
チェックドット
言語: jetbrains.mps.baseLanguage.checkedDots
チェックドット式は、オペランドの null チェックで拡張されたドット式です。
オペランドが NULL の場合、チェックされたドット式全体の値が NULL になります。それ以外の場合は、対応するドット式の値に評価されます。
チェックドット式を作成する方法
Makedot 式はインテンションをチェックしました
ドットの後に「?」を入力します。例: customer.?address.?street
" ? " を使った操作の左変換
チェックされていないドット式を作成するインテンションを使用して、チェックされたドット式を通常のドット式に変換できます。
オーバーロードされた演算子
言語: jetbrains.mps.baseLanguage.overloadedOperators
この言語は二項演算子をオーバーロードする方法を提供します。
オーバーロードされた演算子宣言は、OverloadedOperatorContainer に格納されます。
1 人のオペレータに対して複数のオーバーロードバージョンがある場合は、最も関連性の高いものが選択されます。
オーバーロードされた演算子の使用箇所がその宣言以外のモデルにある場合は、overloadedOperators 言語を使用箇所のモデルの「生成に従事する言語」に追加する必要があります。
サンプル
クラス Complex に対するオーバーロードプラス演算子
また、独自のカスタム演算子を定義することもできます。ある文字列に別の文字列が含まれているかどうかを判断する、文字列用のバイナリブール演算子を作成するとします。
単にこの演算子を使用することができます:
カスタムコンストラクター
言語: jetbrains.mps.baseLanguage.constructors
カスタムコンストラクターは、複雑なオブジェクトを作成する簡単な方法を提供します。それらは特別なルートノードである CustomConstructorsContainer に保存されます。
サンプル
長方形を作成するためのさらに速い方法が必要だとしましょう。
それでは、長方形を作成しましょう。
関連ページ:
ビルダー
ビルダーを使用すると、ユーザーはより便利な方法でオブジェクトとオブジェクト階層を構成できます。階層内の各オブジェクトを手動でインスタンス化してそのプロパティを 1 つずつ設定する代わりに、専用のビルダーを使用して、より簡潔で直感的な方法で同じデータ構造を作成できます。例として、家を建てているとしましょう。House h = new House(); h.houseType = HouseType.detached; Address address = new Address(); address...
コンソール
コンソールは、開発者がアクティブなモデルに対して MPS 環境で直接 DSL コードを便利に実行できるようにするツールです。これにより、モデルをすばやくクエリして変更できます。モデルに対してアクションをトリガーしたり、プロジェクトに関する統計を調べたりすることができます。例: (廃止予定の)概念のすべての(またはいくつかの)インスタンスをすばやく取得し、新しい概念に移行することができます。#instances(TryStatement).where({~it => it.catchClau...