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

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

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

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

状況に関わらず、Delete キーで明示的な getter または setter を削除し、Enter キーで作成することができます。

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

関連ページ:
BaseLanguage の拡張機能用のジェネレーターを実装する
この記事では、LValue 式で動作する BaseLanguage 拡張機能のジェネレーターを記述する慣用的な方法を紹介します。BaseLanguage 式は、代入式の左側で使用できる場合、lvalue であると言います。このような式を導入する概念は、動作の側面でインスタンスメソッド Expression#isLValue() または静的メソッド Expression#lvalue() のいずれかをオーバーライドする必要があります。この調査は 2 つの独立した言語で構成されており、どちらも BaseLan...
クロージャー
導入:クロージャは、基本言語の便利な拡張機能です。コードを簡潔にするだけでなく、プログラミングにおける関数型パラダイムの世界へと導いてくれる手段としても活用できます。プログラム内で関数を第一級オブジェクトのように扱うことができます。つまり、変数に格納したり、メソッドの引数として渡したり、メソッドや関数が他の関数を返すようにしたりできます。MPS クロージャサポートを使用すると、独自の言語でクロージャを使用できます。実際、MPS 自体も、コレクション言語などでクロージャを多用しています。この言語は...