Elixir 派生

2023-12-16 20:43 更新

Elixir允許我們基于Any的實(shí)現(xiàn)來派生一個(gè)協(xié)議實(shí)現(xiàn).讓我們先實(shí)現(xiàn)?Any?:

defimpl Blank, for: Any do
  def blank?(_), do: false
end

現(xiàn)在,當(dāng)定義結(jié)構(gòu)體時(shí),我們能夠精確地派生?Blank?協(xié)議的實(shí)現(xiàn).讓我們創(chuàng)造另一個(gè)結(jié)構(gòu)體,名為?DeriveUser?:

defmodule DeriveUser do
  @derive Blank
  defstruct name: "john", age: 27
end

當(dāng)派生的時(shí)候,Elixir會(huì)基于Any的實(shí)現(xiàn)來為DeriveUser實(shí)現(xiàn)Blank協(xié)議.注意這個(gè)行為是選擇性加入:注意結(jié)構(gòu)體的協(xié)議只可能是明確實(shí)現(xiàn)的或派生而來的.


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)