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命令定义的函数规格.


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号