自定义行为中的可选回调
Version >= 18.0
默认情况下,行为模块中 -callback
指令中指定的任何函数都必须由实现该行为的模块导出。否则,你将收到编译器警告。
有时,你希望回调函数是可选的:如果存在和导出,行为将使用它,否则将回退到默认实现。为此,像往常一样编写 -callback
指令,然后在 -optional_callbacks
指令中列出回调函数:
-callback bar() -> ok.
-optional_callbacks([bar/0]).
如果模块导出 bar/0
,Dialyzer 仍将检查类型规范,但如果该函数不存在,则不会收到编译器警告。
在 Erlang / OTP 本身中,这是针对 gen_server
,gen_fsm
和 gen_event
行为中的 format_status
回调函数完成的。