Elixir 定义行为
2023-12-16 20:47 更新
假设我们要实现一系列的语法解析器,解析结构化数据:例如,JSON解析器或YAML解析器.它们会有相同的行为:都提供了
parse/1
函数和extensions/0
函数.parse/1
函数将返回一个结构化数据的Elixir表述,而extensions/0
函数会返回一个用于每种数据类型的文件扩展名列表,(例如.json
用于JSON文件).我们可以创建一个Parser
行为:
defmodule Parser do
@callback parse(String.t) :: any
@callback extensions() :: [String.t]
end
接受了Parser
行为的模块必须实现由@callback
命令定义的所有函数.如你所见,@callback
需要一个函数名以及一个如之前用@spec
命令定义的函数规格.
以上内容是否对您有帮助:
更多建议: