iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0

註解

先前有少為提到
在 Elixir 裡面使用 # 來寫單行註解

模組文件

針對某個模組的文件使用,@moduleoc""" 開始,再一個 """ 結束來標記如下:

defmodule Greet do
  @moduledoc """
  這個模組的文件
  """

end

一但這個模組有這個說明,在 iex 內使用 h 函式的時候可以查看該模組的文件

iex(7)> h Greet

                                     Greet

這個模組的文件

Elixir 內建與很多套件都是使用這個方式來寫文件,寫在程式內的好處就是除了 iex 可以方便使用 h 函式來查看,Agent 也可以經由 MCP 來查詢。

函數測試

  @doc """
  Hello world.

  ## Examples

      iex> Greet.hello()
      :world

  """
  def hello do
    :world
  end

函數也是一樣,寫了之後可以經由 iex 查看文件,通常會加上範例

iex(8)> h Greet.hello

                                  def hello()

Hello world.

## Examples

    iex> Greet.hello()
    :world

文件測試 (doctest)

在寫函式的文件示範的時候,最怕的就是更新的時候沒有連文件一起更新
但是 Elixir 提供了 doctest 功能,會將依照規範寫的 Example 當成測試一起跑過

執行測試的時候 會看到最後的結果寫有跑過 doctest 與一班測試的數量

mix test
Running ExUnit with seed: 508207, max_cases: 20

..
Finished in 0.01 seconds (0.00s async, 0.01s sync)
1 doctest, 1 test, 0 failures

doctest 會偵測的語法為,模擬我們在 iex 中輸入指令的 iex>

只要有 iex>,右邊的程式就會被執行
接下來的下一行就會是期待的結果

iex> Greet.hello()
:world

這個等同於

assert Greet.hello() === :world

也可以使用 ...> 寫需要跨行的程式

iex> ["Elixir", "Erlang"]
...> |> List.first()
"Elixir"

上一篇
IO 模組
下一篇
Struct
系列文
通勤看手機就可讀懂的 Elixir 語言入門教學17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言