Fsharp-classes
提供:Dev Guides
F#-クラス
クラスは、プロパティ、メソッド、およびイベントを持つことができるオブジェクトを表す型です。 「これらは、アプリケーションのアクション、プロセス、および概念的なエンティティをモデル化するために使用されます」。
構文
クラスタイプを定義するための構文は次のとおりです-
どこで、
- type-name は有効な識別子です。 これに対するデフォルトのアクセス修飾子は public です。
- type-params は、オプションのジェネリック型パラメーターを説明します。
- parameter-list は、コンストラクタパラメータを記述します。 プライマリコンストラクターのデフォルトのアクセス修飾子は public です。
- オプションの as キーワードと共に使用される identifier は、インスタンス変数または self-identifier に名前を付けます。これは、型のインスタンスを参照するために型定義で使用できます。
- inherit キーワードを使用すると、クラスの基本クラスを指定できます。
- let バインディングを使用すると、クラスに対してローカルなフィールドまたは関数値を宣言できます。
- do-bindings セクションには、オブジェクトの構築時に実行されるコードが含まれています。
- member-list は、追加のコンストラクター、インスタンスおよび静的メソッドの宣言、インターフェイス宣言、抽象バインディング、プロパティおよびイベント宣言で構成されます。
- 定義の開始と終了を示すキーワード class と end はオプションです。
クラスのコンストラクター
コンストラクターは、クラス型のインスタンスを作成するコードです。
F#では、コンストラクターは他の.Net言語とほとんど異なる動作をします。 クラス定義では、プライマリコンストラクターの引数はparameter-listとして記述されます。
コンストラクターの本体は、 let および do バインディングで構成されます。
あなたは新しいキーワードを使用してメンバーを追加することにより、追加のコンストラクタを追加することができます-
次の例は、概念を示しています-
例
次のプログラムは、クラスのオブジェクトが作成されている間にラインの長さを計算するコンストラクタとともにラインクラスを作成します-
あなたがプログラムをコンパイルして実行すると、次の出力が得られます-
バインドをしましょう
クラス定義のletバインディングを使用すると、F#クラスのプライベートフィールドとプライベート関数を定義できます。
あなたがプログラムをコンパイルして実行すると、次の出力が得られます-
_Greetings_クラスに自己識別子_gr_を使用していることに注意してください。