5

友人と私は F# について調べていて、現在レコードをいじっています。

人を代表するために次の記録を作成しました。

type Person =
  {name: string;
   father: Person;
   mother: Person;}

F# Interactive はそれを受け入れます。使用方法がわからないことを除けば、ある意味で型は理にかなっています。人を宣言しようとすると、宣言の時点で両親を宣言し、次に両親を宣言する必要があります。このタイプを実際に使用する方法はありますか?そうでない場合、なぜ私たちはそれを作成できるのでしょうか?

PS: 親はオプションであることを意図しているため、オプション (Some x | None) 型でカプセル化する必要があることは十分承知しています。

編集

私の質問は、上記を修正する方法ではありません。解決策はすでに PS に書かれています。私の質問は、上記の型を実際に使用できますか。たとえば、上記の形式の Person レコードを宣言できますか? そうでなければ、使えない型を作ったに違いない。なんでこんな型ができるの?

4

2 に答える 2

9

と宣言するfathermotherParent option次のように使用できます。

let f = { name = "Father"; father = None; mother = None }
let m = { name = "Mother"; father = None; mother = None }
let c = { name = "Child"; father = Some(f); mother = Some(m) }

Parent optionforfatherを使用しないmotherと、「null 親」インスタンスを作成し、代わりにそれを使用する必要がありますNone

于 2013-06-07T18:44:46.530 に答える