Elixir 回退到Any

2023-12-16 20:46 更新
当一个实现无法找到时,@derive的替代方法是明确地告知协议回退到Any.通过在协议定义中将@fallback_to_any设置为true:
defprotocol Blank do
  @fallback_to_any true
  def blank?(data)
end

假设我们已经像之前那样实现了​Any​:

defimpl Blank, for: Any do
  def blank?(_), do: false
end

现在所有没有实现Blank协议的数据类型(包括结构体)都会被认为是非空白的.与@derive相反,回退到Any是选择性退出的:所有数据都得到了一个预置的行为,除非它们提供了自己的协议实现.那种技术更好取决于使用场景,但Elixir开发者更趋向于使用显性定义,你能看到许多库使用@derive.


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号