gpt4 book ai didi

dictionary - 如何将任何记录转换为 F# 中的 map /字典?

转载 作者:行者123 更新时间:2023-12-05 08:34:14 29 4
gpt4 key购买 nike

我需要将任意记录序列化到 map /字典中。

我想象我的最终类型是这样的:

type TabularData= array<Map<string, obj>>

但我在构建接受任何记录并将它们转换为 Map 的通用函数时遇到了问题。

最佳答案

在实践中,最好的建议可能是使用一些现有的序列化库,如 FsPickler .但是,如果您真的想为记录编写自己的序列化,那么 GetRecordFields(如评论中所述)是可行的方法。

以下获取记录并创建从 string 字段名称到字段的 obj 值的映射。请注意,它不处理嵌套记录并且速度不是特别快:

open Microsoft.FSharp.Reflection

let asMap (recd:'T) =
[ for p in FSharpType.GetRecordFields(typeof<'T>) ->
p.Name, p.GetValue(recd) ]
|> Map.ofSeq

这是一个用简单记录调用它的小例子:

type Person =
{ Name : string
Age : int }

asMap { Name = "Tomas"; Age = -1 }

关于dictionary - 如何将任何记录转换为 F# 中的 map /字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30895624/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com