2014-11-06 186 views
0

我在将数组内部的数组转换为记录类型时遇到了一些麻烦。有问题的代码是这样的在lambda内创建记录

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型“”一[]”不包含字段‘日期’

但我已经正确定义了记录类型,我知道这是因为:

let x = { date = DateTime.Now; payee = "test"; category = "test"; memo = "test"; outflow = 0.0f; inflow = 0.0f } 

工作得很好。

回答

1

传递给Array.collect的函数应该返回一个数组而不是一条记录。你可以用[| ... |]或者Array.map而不是Array.collect来包装你的记录。