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
屬性。