【发布时间】:2018-05-21 03:51:52
【问题描述】:
最近我解决了一个涉及更新大量键值的问题。
当然,我考虑使用Map,像Map.put/3 这样的操作。
然而,鉴于 Elixir 中数据结构的不可变特性,这似乎还不够:
iex> m = Map.put(%{}, :a, 1)
%{a: 1}
iex> Map.put(m, :b, 2)
%{a: 1, b: 2}
iex> m
%{a: 1}
然后我通过将Map 的状态保存在GenServer 中并使用handle_cast/3 调用更新它来解决问题。
一般来说,这是正确的方法,还是这里太过分了?
【问题讨论】:
标签: dictionary elixir immutability gen-server mutability