W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
@derive
的替代方法是明確地告知協(xié)議回退到Any
.通過在協(xié)議定義中將@fallback_to_any
設置為true
:defprotocol Blank do
@fallback_to_any true
def blank?(data)
end
假設我們已經像之前那樣實現(xiàn)了?Any
?:
defimpl Blank, for: Any do
def blank?(_), do: false
end
現(xiàn)在所有沒有實現(xiàn)Blank
協(xié)議的數據類型(包括結構體)都會被認為是非空白的.與@derive
相反,回退到Any
是選擇性退出的:所有數據都得到了一個預置的行為,除非它們提供了自己的協(xié)議實現(xiàn).那種技術更好取決于使用場景,但Elixir開發(fā)者更趨向于使用顯性定義,你能看到許多庫使用@derive
.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: