我在将数组内的数组转换为记录类型时遇到了一些麻烦。违规代码就是这个
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 []'不包含字段'date'
但我已经正确定义了记录类型,因为:
let x = { date = DateTime.Now; payee = "test"; category = "test"; memo = "test"; outflow = 0.0f; inflow = 0.0f }
工作得很好。
答案 0 :(得分:1)
传递给Array.collect
的函数应该返回一个数组,而不是一个记录。您可以使用[| ... |]
将记录包装在数组中,也可以使用Array.map
代替Array.collect
。