0 0
Read Time:1 Minute, 0 Second

elixir 的模塊屬性除了可幫助我們建立模塊 (module) 的說明, 函數 (function) 的說明外, 也可幫助我們定義常數。

elixir module attributes

elixir 的模塊屬性, 區分為:

  • @moduledoc: 代表著模塊 (module) 的說明; 在下面的例子, @moduledoc說明了模塊 Servy.Handler 主要負責 “Handles HTTP requests. “。
defmodule Servy.Handler do

  @moduledoc "Handles HTTP requests. "
  • @doc: 代表著函數 (function) 的說明; 在下面的例子, @doc 說明了函數 handle 主要負責 “Transforms the request into a response.”
 @doc "Transforms the request into a response."
  def handle(request) do
    request
    |> parse
    |> rewrite_path
    |> log
    |> route
    |> track
    |> format_response

  end
  • @ (定義常數): 我們可使用 @ 在模塊內定義常數。在下面的例子中, 我們定義了常數 @page_path 來代表著函數 Path.expand(“../../pages”, __DIR__) 執行後的回傳值; 某個的路徑。
defmodule Servy.Handler do

  @moduledoc "Handles HTTP requests. "

  @page_path Path.expand("../../pages", __DIR__)

當我們定義了常數 @page_path 在模塊內, 則從 @page_path 在模塊內的位置之後的所有函數, 都可以使用 @page_path。在下面的例子中, @page_path 在模塊 Servy.Handler 內所有的函數之前, 所以, 模塊 Servy.Handler 內的所有函數, 都可以使用 @page_path。

defmodule Servy.Handler do

  @moduledoc "Handles HTTP requests. "

  @page_path Path.expand("../../pages", __DIR__)

  @doc "Transforms the request into a response."
  def handle(request) do
    request
    |> parse
    |> rewrite_path
    |> log
    |> route
    |> track
    |> format_response

  end

 def parse(request) do
def route(%{method: "GET", path: "/about"} = conv) do
     @page_path
     |> Path.join("about.html")
     |> File.read
     |> handle_file(conv)
end

About Post Author

方俊賢; Ken Fang

專利號: 201910652769.4; 一種深度學習的演算法, 預測微服務持續發布、持續部署後對產品整體質量的影響, 獲得國家知識財產局專利; 符合專利法實施細則第 44 條的規定。
Happy
Happy
0 %
Sad
Sad
0 %
Excited
Excited
0 %
Sleepy
Sleepy
0 %
Angry
Angry
0 %
Surprise
Surprise
0 %

Average Rating

5 Star
0%
4 Star
0%
3 Star
0%
2 Star
0%
1 Star
0%

發表回復

您的電子郵箱地址不會被公開。 必填項已用*標註

此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據