Elixir 行為介紹

行為是另一個模組可以實現的功能規範列表。它們類似於其他語言的介面。

這是一個示例行為:

defmodule Parser do
  @callback parse(String.t) :: any
  @callback extensions() :: [String.t]
end

以及實現它的模組:

defmodule JSONParser do
  @behaviour Parser

  def parse(str), do: # ... parse JSON
  def extensions, do: ["json"]
end

上面的 @behaviour 模組屬性表示該模組應該定義 Parser 模組中定義的每個函式。缺少函式將導致未定義的行為函式編譯錯誤。

模組可以具有多個 @behaviour 屬性。