この本を読んでます。
8章。OOP。F#はOOPも出来ます・・・というよりは、C#が使うことを前提に設計された実行基板の上で動くので、C#と同じ事はどうやったら出来るのかという話。
まず、今までのレコードについて。
- レコード(typeで定義するやつ)にはmemberが定義出来る。関数を入れても値を入れてもいい(JSみたいな感じかな)
レコードは特別扱いされて内部的にクラスになるが、クラスを定義することもできる。
この辺りは、C#で使うものをF#で作る時には大事そう・・・だけど、今の段階では適当に理解しておくことにする。
さらにメソッドについての追加の事項
- メソッドとコンストラクタは名前付き引数が使える。仮引数の変数名を使う
- メソッドとコンストラクタはオプショナル引数が使える。仮引数に
?
をつける。つけるとoptionになる。- 仮引数のデフォルト値を定義するための
defaultArg
関数がある。単に第1引数がNoneなら第2引数を返す
- 仮引数のデフォルト値を定義するための
- メソッドはオーバーロード出来る
後は、クラスのキャストに関する話、インターフェースの定義の話、無名クラスを作るためのオブジェクト式の話があるが割愛。
さらに、nullの話がある。F#にnullはないが、互換性の観点で入ってしまうことはあり得る。無理矢理入れるためのUnchecked.defaultof<'T>
という関数もある。
8.15のアクティブパターンはちょっと面倒くさそうな話なので、次回