守卫

守卫 属于 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 个练习即可练习 守卫