W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
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ā)者使用,或是由庫來擴展,以支持自定義的行為.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: