Elixir 作為注釋

2023-12-15 14:42 更新

Elixir從Erlang中得到模塊屬性的概念.例如:

defmodule MyServer do
  @vsn 2
end

在上述例子中,我們精確地設置了此模塊的版本屬性.?@vsn?由Erlang VM中的代碼重載機制用于檢查模塊是否被更新.如果沒有指定版本,版本會被設置為該模塊函數的MD5校驗碼.

Elixir由少數的保留屬性.這里是其中最常用的一些:

  • ?@moduledoc?--提供當前模塊的文檔.
  • ?@doc?--提供該屬性之后的函數或宏的文檔.
  • ?@behaviour?--(注意英式拼寫)用于指定OTP或用戶定義的行為.
  • ?@before_compile?--提供一個會在模塊編譯之前導入的鉤子.這使得在編譯前精確注入函數到模塊中成為可能.

@moduledoc@doc是最常用的屬性,我們希望你能經常使用它們.Elixir將文檔放在第一類,并提供了許多訪問文檔的函數.你可以在我們的官方文檔中閱讀更多關于如何在Elixir中書寫文檔.

讓我們回到在之前的章節(jié)中定義了的Math模塊,添加一些文檔并保存到math.ex文件:

defmodule Math do
  @moduledoc """
  Provides math-related functions.

  ## Examples

      iex> Math.sum(1, 2)
      3

  """

  @doc """
  Calculates the sum of two numbers.
  """
  def sum(a, b), do: a + b
end

Elixir建議使用heredocs的markdown來書寫可讀性強的文檔.Heredocs是多行的字符串,它們由三個雙引號開始和結束,會保存其中文本的格式.我們可以直接從IEx獲取任何編譯好的模塊的文檔:

$ elixirc math.ex
$ iex
iex> h Math # Access the docs for the module Math
...
iex> h Math.sum # Access the docs for the sum function
...

我們也提供一個名為ExDoc的工具,它可以用文檔生成HTML頁面.

你可以在Module的文檔中找到完整的屬性列表.Elixir也用屬性來定義類型規(guī)格.

本節(jié)覆蓋了內置屬性.然而,屬性也可以被開發(fā)者使用,或是由庫來擴展,以支持自定義的行為.


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號