- Elixir 教程
- Elixir - 首頁
- Elixir - 概述
- Elixir - 環境
- Elixir - 基本語法
- Elixir - 資料型別
- Elixir - 變數
- Elixir - 運算子
- Elixir - 模式匹配
- Elixir - 決策
- Elixir - 字串
- Elixir - 字元列表
- Elixir - 列表和元組
- Elixir - 關鍵字列表
- Elixir - 對映
- Elixir - 模組
- Elixir - 別名
- Elixir - 函式
- Elixir - 遞迴
- Elixir - 迴圈
- Elixir - 可列舉
- Elixir - 流
- Elixir - 結構體
- Elixir - 協議
- Elixir - 檔案 I/O
- Elixir - 程序
- Elixir - 符號
- Elixir - 推導式
- Elixir - 型別規範
- Elixir - 行為
- Elixir - 錯誤處理
- Elixir - 宏
- Elixir - 庫
- Elixir 有用資源
- Elixir - 快速指南
- Elixir - 有用資源
- Elixir - 討論
Elixir - 庫
Elixir 與 Erlang 庫具有極佳的互操作性。讓我們簡要討論幾個庫。
Binary 模組
內建的 Elixir String 模組處理以 UTF-8 編碼的二進位制資料。當處理不一定是 UTF-8 編碼的二進位制資料時,binary 模組很有用。讓我們考慮一個示例以進一步瞭解 Binary 模組 -
# UTF-8
IO.puts(String.to_char_list("Ø"))
# binary
IO.puts(:binary.bin_to_list "Ø")
執行上述程式時,會產生以下結果 -
[216] [195, 152]
以上示例顯示了差異;String 模組返回 UTF-8 碼點,而 :binary 處理原始資料位元組。
Crypto 模組
crypto 模組包含雜湊函式、數字簽名、加密等。此模組不是 Erlang 標準庫的一部分,而是包含在 Erlang 發行版中。這意味著每當使用它時,都必須在專案的應用程式列表中列出 :crypto。讓我們看看使用 crypto 模組的示例 -
IO.puts(Base.encode16(:crypto.hash(:sha256, "Elixir")))
執行上述程式時,會產生以下結果 -
3315715A7A3AD57428298676C5AE465DADA38D951BDFAC9348A8A31E9C7401CB
Digraph 模組
digraph 模組包含用於處理由頂點和邊構成的有向圖的函式。在構建圖形後,其中的演算法將有助於查詢例如兩個頂點之間的最短路徑或圖形中的迴圈。請注意,:digraph 中的函式會間接地作為副作用更改圖形結構,同時返回新增的頂點或邊。
digraph = :digraph.new()
coords = [{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}]
[v0, v1, v2] = (for c <- coords, do: :digraph.add_vertex(digraph, c))
:digraph.add_edge(digraph, v0, v1)
:digraph.add_edge(digraph, v1, v2)
for point <- :digraph.get_short_path(digraph, v0, v2) do
{x, y} = point
IO.puts("#{x}, #{y}")
end
執行上述程式時,會產生以下結果 -
0.0, 0.0 1.0, 0.0 1.0, 1.0
Math 模組
math 模組包含常見的數學運算,涵蓋三角函式、指數和對數函式。讓我們考慮以下示例以瞭解 Math 模組的工作原理 -
# Value of pi IO.puts(:math.pi()) # Logarithm IO.puts(:math.log(7.694785265142018e23)) # Exponentiation IO.puts(:math.exp(55.0)) #...
執行上述程式時,會產生以下結果 -
3.141592653589793 55.0 7.694785265142018e23
Queue 模組
佇列是一種資料結構,它有效地實現了 (雙端) FIFO (先進先出) 佇列。以下示例顯示了 Queue 模組的工作原理 -
q = :queue.new
q = :queue.in("A", q)
q = :queue.in("B", q)
{{:value, val}, q} = :queue.out(q)
IO.puts(val)
{{:value, val}, q} = :queue.out(q)
IO.puts(val)
執行上述程式時,會產生以下結果 -
A B
廣告