区切られたデータの文字列があります。
a~b~c~d~e~f~g~h~i~j~k~l~...
dog~cat~fish~parrot~mother~father~child~grandparent~...
hello~hi~greetings~yo
タイプのレコードの配列/シーケンスにデータをロードしたい
type myType {
first: string;
second: string;
third: string;
fourth:string;
}
そのため、配列/シーケンスに 3 つのオブジェクトができてしまいます。これを行うためにforループをいじっていますが、それはかなり不可欠だと感じています。機能的なイディオムを使用してこれを達成するにはどうすればよいですか?
編集:区切られた項目の数は常に 4 の倍数である必要がありますが、区切られたデータは可変長である可能性があることを明確にする必要がありました。 type を取得し、すべてのデータが消費されると、Array/seq を返します。
編集2:だから私はこのようなものになってしまった
let createValues(data: string) =
let splitValues(valueString) =
let rec splitData acc = function
| a :: b :: c :: d :: xs -> splitData ({ first=a; second=b; third=c; fourth=d } :: acc) xs
| [] -> acc
| _ -> failwith "uneven data"
splitData [] valueString
splitValues (data.Split [|'~'|] |> Array.toList)
どうも