隨著近幾年 Elixir 開發的相關工具套件發展成熟穩定,想要重新寫一個入門可以輕鬆上手的教學提供對 Elixir 有興趣的新朋友玩玩看。雖然優秀的教學與書已經很多也非常推薦 Elixir 的官方文件,不過每個人的理解新知的方式不同,我在這個系列會使用我理解的方式來講解 Elixir,希望提供給大家不同面向教學。期待大家在看完這個系列後,就算沒有真的寫 Elixir 也能嘴上兩句。
AST 抽象語法樹 在開始使用巨集(macro)之前,我們要先理解 Elixir 在編譯前會變成的抽象語法樹AST (Abstract Syntax Tree)...
除了直接使用 Code.eval_quoted 把表達試直接執行之外寫巨集(macro)的時候,我們也會使用 Macro.to_string/1來預先檢查目前寫...
讓我們建立一個檔案來寫帶有巨集 (macro) 的模組 defmodule MyMacro do defmacro macro_rem(a, b) do...
當我們把共同的邏輯抽出成套件時,有時後會需要規定使用的模組有定義特定的函式作為 callback,除了之前介紹過得 behaviour 來規定之外,我們也可以使...
在 Elixir 裡面沒有像有些語言一樣有特定的 main 之類的程式執行點早些有提到,一次執行的大部分都使用 exs 的 script 執行。但 Elixir...
接續前一篇的 application現在要讓 application 啟動的時候,也開啟網頁伺服器目前 Elixir 有兩個常用的網頁伺服器 (web serv...
Plug 套件還提供了 Plug.Router,裡面有現成的解析路徑 DSL 供我們使用,讓我們定義一個 Router 並將第一個 Plug 改成它 建立一個新...
假如現在要從這個 list 取出偶數再套上一個函式 [1, 2, 3, 4, 5, 6, 7] |> Enum.filter(fn x -> rem...
因為在 Elixir 裡,所有的值都是不可變的 (immutable)所以並沒有這種在其他語言常見的迴圈 # 在 elixir 裡沒有這種: for(i = 0...
假如我們要一個一個計算 1 到指定數字的加總例如 1 到 3 為 1 + 2 + 3 = 6 (為了示範尾遞迴,先別用梯形公式) def sum(0), do:...