技术频道


Elixir v1.15 发布

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

Elixir 自定义结构检查


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

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

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

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

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

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

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

从 Elixir V1.11 开始,增加了 is_struct/2is_exception/1is_exception/2 守护支持。它还增加了对 map.field 防护中语法的支持。


Elixir v1.15 发布

Elixir v1.15 是一个较小的版本,重点改进了编译和启动时间。 此版本还完成了与 Erlang / OTP 记录器的集成过程,带来了开箱即用的日志轮换和压缩等新功能。

 

Elixir 扩展阅读: