我在尝试编译时遇到此错误
运营商' expr。[idx]'已被用于不确定的对象 根据此计划点之前的信息进行输入。考虑添加 进一步的类型约束
这是代码
let convertFile fileName =
let arrayToTransaction (arr: string[]) =
arr
|> Array.map (fun x -> splitStr [|"\n"|])
|> Array.map
(fun x -> {
date = DateTime.Parse(x.[1]);
payee = x.[0].Substring(0, x.[0].IndexOf(','))
category = "Everyday Expenses: Groceries/Food"
memo = "Parsed with my F# parser"
outflow = Single.Parse(x.[2].Substring(str.IndexOf('-') + 1))
inflow = 0.0f
})
答案 0 :(得分:1)
解决方案是完成错误消息所说的内容,并添加类型注释:
|> Array.map
(fun (x:string[]) -> {
date = DateTime.Parse(x.[1]);
payee = x.[0].Substring(0, x.[0].Index
答案 1 :(得分:0)
我明白了,问题就在这一行
|> Array.map (fun x -> splitStr [|"\n"|])
因为splitStr
是一个带有两个参数的辅助函数,但是我认为lambda会" pipe" x
进入它,但它没有那样工作我注意到这样改变它就可以了。
|> Array.map (fun x -> splitStr [|"\n"|] x)