在lambda中创建记录
我在将数组中的数组转换为记录类型时遇到了一些问题。有问题的代码是这样的在lambda中创建记录,lambda,f#,record,Lambda,F#,Record,我在将数组中的数组转换为记录类型时遇到了一些问题。有问题的代码是这样的 let arrayToTransaction arr = arr |> Array.map (fun x -> splitStr [|"\n"|]) |> Array.collect (fun x -> { date = DateTime.Parse(x.[1]);
let arrayToTransaction arr =
arr
|> Array.map (fun x -> splitStr [|"\n"|])
|> Array.collect
(fun x -> {
date = DateTime.Parse(x.[1]);
payee = x.[0].Substring(0, x.[0].IndexOf(','))
category = "Test category"
memo = "Parsed with my F# parser"
outflow = Single.Parse(str.Substring(str.IndexOf('-') + 1))
inflow = 0.0f
})
我得到的错误是
错误1类型“a[]”不包含字段“日期”
但我已经正确定义了我知道的记录类型,因为:
let x = { date = DateTime.Now; payee = "test"; category = "test"; memo = "test"; outflow = 0.0f; inflow = 0.0f }
工作正常。传递给
数组的函数。collect
应返回数组而不是记录。您可以使用[|…|]
将记录包装在数组中,也可以使用array.map
而不是array.collect