技术频道


Elixir v1.8 发布

Elixir v1.8 在基础架构级别上进行了许多改进,缩短了编译时间,加快了常见模式,并增加了系统内省的功能。

自定义结构检查


Elixir 现在提供 Inspect 协议的可派生实现。 简而言之,这意味着无论何时检查数据结构中的数据都非常容易。 例如,假设您有一个包含安全和隐私敏感信息的用户结构:

defmodule User do
  defstruct [:id, :name, :age, :email, :encrypted_password]
end

默认情况下,如果您通过 inspect(用户) 检查用户,它将包括所有字段。 这可能导致诸如 :email:encrypted_password 等字段出现在日志,错误报告等中。您可以始终为此类情况定义Inspect 协议的自定义实现,但 Elixir v1.8 通过允许您派生 Inspect 使其更简单 协议:

defmodule User do
  @derive {Inspect, only: [:id, :name, :age]}
  defstruct [:id, :name, :age, :email, :encrypted_password]
end

现在所有用户结构都将打印,其余所有字段都已折叠:

#User<id: 1, name: "Jane", age: 33, ...>

您还可以传递 @derive {Inspect, except: [...]},以防您希望默认保留所有字段并仅排除部分字段。

Elixir 扩展阅读:



发表评论