iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Software Development

通勤看手機就可讀懂的 Elixir 語言入門教學 系列

隨著近幾年 Elixir 開發的相關工具套件發展成熟穩定,想要重新寫一個入門可以輕鬆上手的教學提供對 Elixir 有興趣的新朋友玩玩看。雖然優秀的教學與書已經很多也非常推薦 Elixir 的官方文件,不過每個人的理解新知的方式不同,我在這個系列會使用我理解的方式來講解 Elixir,希望提供給大家不同面向教學。期待大家在看完這個系列後,就算沒有真的寫 Elixir 也能嘴上兩句。

鐵人鍊成 | 共 30 篇文章 | 2 人訂閱 訂閱系列文 RSS系列文
DAY 21

Meta-programming 1

AST 抽象語法樹 在開始使用巨集(macro)之前,我們要先理解 Elixir 在編譯前會變成的抽象語法樹AST (Abstract Syntax Tree)...

2025-10-05 ‧ 由 韋政 分享
DAY 22

Meta-programming 2 - 使用 unquote 帶入變數

除了直接使用 Code.eval_quoted 把表達試直接執行之外寫巨集(macro)的時候,我們也會使用 Macro.to_string/1來預先檢查目前寫...

2025-10-06 ‧ 由 韋政 分享
DAY 23

Meta-programming 3 - 定義巨集

讓我們建立一個檔案來寫帶有巨集 (macro) 的模組 defmodule MyMacro do defmacro macro_rem(a, b) do...

2025-10-07 ‧ 由 韋政 分享
DAY 24

Meta-programming 4 - 自動設置函數

當我們把共同的邏輯抽出成套件時,有時後會需要規定使用的模組有定義特定的函式作為 callback,除了之前介紹過得 behaviour 來規定之外,我們也可以使...

2025-10-08 ‧ 由 韋政 分享
DAY 25

Elixir 的 Application (應用程式)

在 Elixir 裡面沒有像有些語言一樣有特定的 main 之類的程式執行點早些有提到,一次執行的大部分都使用 exs 的 script 執行。但 Elixir...

2025-10-09 ‧ 由 韋政 分享
DAY 26

Plug

接續前一篇的 application現在要讓 application 啟動的時候,也開啟網頁伺服器目前 Elixir 有兩個常用的網頁伺服器 (web serv...

2025-10-10 ‧ 由 韋政 分享
DAY 27

Plug 路由 (Router)

Plug 套件還提供了 Plug.Router,裡面有現成的解析路徑 DSL 供我們使用,讓我們定義一個 Router 並將第一個 Plug 改成它 建立一個新...

2025-10-11 ‧ 由 韋政 分享
DAY 28

Comprehensions (推導式) (for)

假如現在要從這個 list 取出偶數再套上一個函式 [1, 2, 3, 4, 5, 6, 7] |> Enum.filter(fn x -> rem...

2025-10-12 ‧ 由 韋政 分享
DAY 29

關於遞迴 (Recursion)

因為在 Elixir 裡,所有的值都是不可變的 (immutable)所以並沒有這種在其他語言常見的迴圈 # 在 elixir 裡沒有這種: for(i = 0...

2025-10-13 ‧ 由 韋政 分享
DAY 30

尾遞迴最佳化 (Tail Call Optimization)

假如我們要一個一個計算 1 到指定數字的加總例如 1 到 3 為 1 + 2 + 3 = 6 (為了示範尾遞迴,先別用梯形公式) def sum(0), do:...

2025-10-14 ‧ 由 韋政 分享