檢視原始碼 mix compile.protocols (Mix v1.16.2)
合併所有路徑中的所有協定。
除非專案在設定中停用 :consolidate_protocols
選項,否則此任務會自動呼叫。
合併
當不會發生動態程式碼載入時,協定合併在製作階段很有用,它會透過不考慮程式碼載入來有效最佳化協定分派。
此任務會合併程式碼路徑中的所有協定,並將新的二進位檔案輸出到指定的目錄。對於一般應用程式,預設為「_build/MIX_ENV/lib/YOUR_APP/consolidated」,而對於傘狀專案,預設為「_build/MIX_ENV/consolidated」。
如果您手動編譯協定或建置版本,則需要考慮已產生的協定。這可以用
$ elixir -pa _build/MIX_ENV/lib/YOUR_APP/consolidated -S mix run
或在傘狀專案中
$ elixir -pa _build/MIX_ENV/consolidated -S mix run
您可以透過檢查協定的屬性來驗證協定是否已合併
iex> Protocol.consolidated?(Enumerable)
true
摘要
函式
傳回協定是否已合併至少一次。