我正在使用 Filehelpers 读取一个简单的 CSV 文件 - 该文件只是一个键值对。 (字符串, int64)
我为此编写的 f# 类型是:
type MapVal (key:string, value:int64) =
new()= MapVal("",0L)
member x.Key = key
member x.Value = value
我在这里遗漏了一些基本的东西,但 FileHelpers 总是假定字段的顺序与我指定的相反 - 就像在 Value, Key 中一样。
let dfe = new DelimitedFileEngine(typeof<MapVal>)
let recs = dfe.ReadFile(@"D:\e.dat")
recs |> Seq.length
我在这里错过了什么?
最佳答案
主要构造函数参数的顺序不一定决定字段在类型中出现的顺序(实际上,取决于参数的使用方式,它们甚至可能不会导致生成字段)。在我看来,FileHelpers 没有提供使用属性而不是字段的方法这一事实是不幸的。如果您想更好地控制类的物理布局,则需要显式声明字段:
type MapVal =
val mutable key : string
val mutable value : int64
new() = { key = ""; value = 0L }
new(k, v) = { key = k; value = v }
member x.Key = x.key
member x.Value = x.value
关于csv - FileHelpers 类型中的字段顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6163356/