Elixir 中的数据透明性与分层数据操作
1. Elixir 数据透明性概述
在 Elixir 中,模块往往是一种抽象,客户端通常无需了解其内部实现细节。例如,调用 Fraction.new/2 来创建一个抽象实例,然后将该实例传递给同一模块的其他函数。然而,Elixir 中的数据始终是透明的,客户端可以读取结构体(以及其他数据类型)中的任何信息,这与典型的面向对象语言中的封装有所不同。
下面通过一些示例来验证这一点:
# 启动 IEx 会话
$ iex todo_entry_map.ex
iex(1)> todo_list = TodoList.new() |>
TodoList.add_entry(%{date: ~D[2023-12-19], title: "Dentist"})
%{~D[2023-12-19] => [%{date: ~D[2023-12-19], title: "Dentist"}]}
从返回值可以看到待办事项列表的完整结构,能够直接判断出它是由一个映射实现的,还能了解到单个条目的存储细节。
再看 MapSet 的例子:
iex(1)> mapset = MapSet.new([:monday, :tuesday])
MapSet.new([:monday, :tuesday])
这里结果以特殊方式打
Elixir数据透明性与分层操作解析
超级会员免费看
订阅专栏 解锁全文
776

被折叠的 条评论
为什么被折叠?



