F#のクラスは、インスタンスを生成するときにプロパティの値を任意の値で初期化する機能があったりします。C#でいうオブジェクト初期化子みたいなものですね。
ただ、F#ではオブジェクト初期化子という名前は使われていなくて「初期化時のプロパティへの値の代入」という言われ方をしています。
書き方は簡単です。以下のように書きます。
let 変数 = クラス名(プロパティ名 = 値, プロパティ名 = 値...)
さっそくサンプルで動きを確認してみます。
// 名前と年齢を持ったクラス type Person() = let mutable name = "" let mutable age = 0 member this.Name with get() = name and set(v) = name <- v member this.Age with get() = age and set(v) = age <- v // 初期化時のプロパティへの値の代入 let p = Person(Name = "田中", Age = 18) // 値がちゃんと入ってるか確認 printfn "Person Name = %s, Age = %d" p.Name p.Age
実行結果
Person Name = 田中, Age = 18
過去記事
- 手軽なスクリプト言語としてのF#
- 手軽なスクリプト言語としてのF# その2
- 手軽なスクリプト言語としてのF# その3
- 手軽なスクリプト言語としてのF# その4
- 手軽なスクリプト言語としてのF# その5
- 手軽なスクリプト言語としてのF# その6
- 手軽なスクリプト言語としてのF# その7
- 手軽なスクリプト言語としてのF# その8「レコード」
- 手軽なスクリプト言語としてのF# その9「クラス」
- 手軽なスクリプト言語としてのF# その10「継承・アブストラクトクラス」
- 手軽なスクリプト言語としてのF# その11「インターフェースと演算子のオーバーロード」
- 手軽なスクリプト言語としてのF# その12「ラムダ式とイベント」