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命令定义的函数规格.
以上内容是否对您有帮助:

免费 AI IDE


更多建议: