他の言語
ここでは、便利な 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.catchClause.isNotEmpty; }).refactor({~node =...