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.
以上内容是否对您有帮助:

免费 AI IDE


更多建议: