andってのはクラス定義の循環参照に使うのか
クラス間の循環参照、C++だと前方宣言してごまかすようなところを、F#ではandを使ってクラスの定義をつなげることで対応するらしい。全然使わないから人様のコード読んでも???だったわ。以下の例は循環参照はしてないけどandでクラス定義をつないだ例。
type Hoge0 = abstract member func1 : int -> int and Hoge1(x:int) = member this.moge() = 1 and Hoge2(x:int) = member this.moge() = 2 [<EntryPoint>] let main argv = let x = Hoge1(2) printfn "%d" (x.moge()) let y = Hoge2(2) printfn "%d" (y.moge()) 0
七誌さんが書いた
の「クラス定義の循環参照」を見るといいな。