守衛

守衛 在 Elixir

53 個練習

關於 守衛

守衛是模式比對的補充,可以用來做更複雜的檢查。在可以使用模式比對的某些(但並非全部)情況下也能使用守衛,例如函式子句或 case 子句。

def empty?(list) when is_list(list) and length(list) == 0 do
  true
end
  • 守衛以 when 關鍵字開頭,後面接著一個布林運算式。

  • 守衛運算式是特殊的函式,它們:

    • 必須是純函式,且不會改變任何全域狀態。
    • 必須回傳嚴格的 true 或 false 值。
  • 常見的守衛清單記錄在 Elixir 文件 中,其中包括:

  • 你可以用 defguard 定義自己的守衛。

    • 依照 Elixir 的命名慣例,守衛的名稱應該以 is_ 開頭。

      defmodule HTTP do
        defguard is_success(code) when code >= 200 and code < 300
      
        def handle_response(code) when is_success(code) do
          :ok
        end
      end
      
透過 GitHub 編輯 連結會在新視窗或分頁中開啟

學習 守衛

練習已鎖定

再解鎖 6 個練習,就能練習 守衛