に文字列を解釈する私はリストコードocamlの
let myList = ["Animals"; "Cat"; "Tiddles"; "Dog"; "Rover"]
を持っていると私は、このデータを読み込み、そのようなオブジェクトを返す関数を作成しようとしています:
Animals([Cat("Tiddles"); Dog("Rover")])
これまでのところ、私はこのようなものを持っている:
になりlet rec readList = function
| hd :: tl -> readString hd tl
and readString hd tl =
match hd with
| "Animals" -> Animals([readList tl])
| "Cat" -> Cat("...")
| "Dog" -> Dog("...");;
私が知っている必要があり何
Animals([Cat("...")])
は私が猫オブジェクトにリスト内の次の項目に合格した後、犬は次の
追加することができるので、それが見えるかもしれませんセミコロンを追加し、readListのTLを呼び出すことができる方法ですxは、リスト内の次の項目(「Tiddles」)で、TLは、リストの残りの部分(「犬」、「ローバー」)を含んでいる。この
| "Cat" -> Cat(x); readList tl
のようなもの。しかし、セミコロンでは、readList tlだけが返されるので、そのようには動作しません。
基本的に、リスト内のデータを使用してAnimalsリストにオブジェクトを再帰的に追加できるようにします。