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