BaseLanguage のプロパティ
プロパティは、 getter および setter とともにプライベートフィールドを使用して BaseLanguage クラスを強化するためのショートカットを提供します。
特性の説明
プロパティは BaseLanguage 自体の一部であるため、追加のインポートは必要ありません。これらは、フィールドやメソッドとともにクラスメンバーとして作成されることになっています。

プロパティは以下を定義します。
可視性。getter の可視性として使用されます。
型 - プロパティによって格納される値の型、getter の戻り値の型、および setter の単一パラメーターの型を示します。
Getter - 'default' (暗黙的) でプロパティ値を返すことも、明示的に返すこともできます。
Setter - 読み取り専用プロパティの場合は「none」にすることができ、'default' はプロパティの値を単に設定するか、明示的に設定します。
プロパティの編集
新しいプロパティを挿入すると、通常はデフォルトの getter とプライベートのデフォルト setter で始まります。

getter で Enter を押すと、コードを挿入するための明示的な getter が作成され、setter が削除されます (読み取り専用プロパティ。setter は、setter 領域で Enter を押すことで提供できます)。

代わりに、setter で Enter キーを押すと、デフォルトの getter が保持され、明示的な setter が作成されます。

状況に関係なく、いつでも明示的な getter または setter を Delete で削除し、Enter で作成できます。

getter および setter では、2 つの特別な式が使用できます。
value - setter のパラメーターを参照します
実際のプロパティ名 - setter と getter の両方の現在のプロパティ値を指します。
プロパティを getter および setter のフィールドに変換したり、その逆に変換したりするために、2 つのインテンション / リファクタリングが使用できます。

関連ページ:

BaseLanguage の拡張機能用のジェネレーターを実装する
この記事では、LValue 式で動作する BaseLanguage 拡張機能のジェネレーターを記述する慣用的な方法を紹介します。BaseLanguage 式は、代入式の左側で使用できる場合、lvalue であると言います。このような式を導入する概念は、動作の側面でインスタンスメソッド Expression#isLValue() または静的メソッド Expression#lvalue() のいずれかをオーバーライドする必要があります。この調査は 2 つの独立した言語で構成されており、どちらも BaseLan...

クロージャー
導入:クロージャは、基本言語の便利な拡張機能です。これらはコードをより簡潔にするだけでなく、プログラミングの関数型パラダイムの領域を通過するための手段として使用できます。プログラムでは、関数を第一級オブジェクトとして扱うことができます。変数に格納したり、引数としてメソッドに渡したり、メソッドや関数に他の関数を返させたりすることができます。MPS クロージャサポートを使用すると、自国語でクロージャを使用できます。実際、MPS 自体は、たとえばコレクション言語でクロージャを多用します。この言語は、...