自定義行為中的可選回撥
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
回撥函式完成的。