Elixir 定義行為

2023-12-16 20:47 更新
假設(shè)我們要實(shí)現(xiàn)一系列的語(yǔ)法解析器,解析結(jié)構(gòu)化數(shù)據(jù):例如,JSON解析器或YAML解析器.它們會(huì)有相同的行為:都提供了parse/1函數(shù)和extensions/0函數(shù).parse/1函數(shù)將返回一個(gè)結(jié)構(gòu)化數(shù)據(jù)的Elixir表述,而extensions/0函數(shù)會(huì)返回一個(gè)用于每種數(shù)據(jù)類型的文件擴(kuò)展名列表,(例如.json用于JSON文件).

我們可以創(chuàng)建一個(gè)Parser行為:

defmodule Parser do
  @callback parse(String.t) :: any
  @callback extensions() :: [String.t]
end

接受了Parser行為的模塊必須實(shí)現(xiàn)由@callback命令定義的所有函數(shù).如你所見(jiàn),@callback需要一個(gè)函數(shù)名以及一個(gè)如之前用@spec命令定義的函數(shù)規(guī)格.


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)