任务是使用Elixir在文件中保存和加载结构的HashDict.我正计划迭代HashDict并在文件的每一行写出一个结构.但是,我无法在Google上找到有关如何将Struct或Dict保存到文件的任何内容.特别是,是否有内置的序列化Dicts的方法?
我尝试先转换为字符串.iex片段: -
iex(68)> {:ok,of} = File.open("ztest.txt", [:write, :utf8])
{:ok, #PID<0.232.0>}
iex(69)> IO.write(of, {:atuple, "abc"})
** (Protocol.UndefinedError) protocol String.Chars not implemented for {:atuple, "abc"}
Run Code Online (Sandbox Code Playgroud)
有人想知道如何为地图或元组实现String.chars的实现吗?
此外,是否可以将IO.inspect的输出传输到文件中?我尝试这样做是不成功的.
Chr*_*ord 21
您可以使用:erlang.term_to_binary和:erlang.binary_to_term来序列化和反序列化您的HashDict:
iex> dict = HashDict.new |> Dict.put(:struct1, %{some: :struct})
#HashDict<[struct1: %{some: :struct}]>
iex> File.write! "encoded.txt", :erlang.term_to_binary(dict)
:ok
iex> File.read!("encoded.txt") |> :erlang.binary_to_term
#HashDict<[struct1: %{some: :struct}]>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2965 次 |
| 最近记录: |