自定義行為中的可選回撥

Version >= 18.0

預設情況下,行為模組中 -callback 指令中指定的任何函式都必須由實現該行為的模組匯出。否則,你將收到編譯器警告。

有時,你希望回撥函式是可選的:如果存在和匯出,行為將使用它,否則將回退到預設實現。為此,像往常一樣編寫 -callback 指令,然後在 -optional_callbacks 指令中列出回撥函式:

-callback bar() -> ok.
-optional_callbacks([bar/0]).

如果模組匯出 bar/0,Dialyzer 仍將檢查型別規範,但如果該函式不存在,則不會收到編譯器警告。

在 Erlang / OTP 本身中,這是針對 gen_servergen_fsmgen_event 行為中的 format_status 回撥函式完成的。