gpt4 book ai didi

Elixir 如何将 Map 结构转换为 Record 结构

转载 作者:行者123 更新时间:2023-12-04 09:59:38 25 4
gpt4 key购买 nike

我有一个 Record 结构和一个 Map 结构,例如:

defmodule Foo.Bar do
defstruct boo: nil, baz: nil
end

defmodule Foo do
require Record
Record.defrecord :bar, Foo.Bar, [boo: nil, baz: nil]
end

我可以像这样将记录转换为 map :
defp update_map({k, v}, map), do: Map.update!(map, k, fn(_) -> v end)
defp rd2map(rd) do
Foo.bar(rd) |> Enum.reduce(%Foo.Bar{}, &update_map/2)
end

但是如何将 map 转换为记录?

最佳答案

帕特里克的所有免责声明和信息都是正确的。如果不注释字段,您将无法在运行时解决问题。

但是,如果您从 Erlang 记录转换(这主要是使用它们的唯一原因),您可以在编译时解决此问题。我们在 Elixir 源代码上进行转换以转换 Erlang 的 #file_info{}进入 %File.Stat{} :

https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/file/stat.ex

关于Elixir 如何将 Map 结构转换为 Record 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28891758/

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