卫语句

在计算机程序设计中，卫（guard）是布尔表达式，其结果必须为真，程序才能执行下去。卫语句（guard code或guard clause）用于检查先决条件。卫语句的用途，例如：
引用（reference）使用前检查是否为空引用；
使用一个布尔域，使得释放资源操作成为幂等运算，即多次释放资源等效于只释放一次。
概述
卫语句可用于子进程的提前退出（early exit），这是结构化程序设计的一种常见偏离，可删除一层嵌套使得代码更扁平： 把if guard { ... }替代为：if not guard: return; ....

在APL、Haskell、Clean、Erlang、occam、、OCaml、Swift与Scala程序设计语言中，这一术语有特殊含义。

Mathematica中，卫被称为约束（constraints）。

形式化方法的一种语言，守卫命令语言中，卫是基础概念。

在增强的模式匹配中，卫语句用于跳过一些即使结构匹配的模式。

条件语句中的布尔表达式也符合卫的定义，虽然被称作“条件”。

下述Haskell语言的例子，卫出现在每对"|"与"="之间：

f x
 | x > 0 = 1
 | otherwise = 0

这类似于如下的数学表示的"if"与"otherwise" 子句就是卫语句：



如果有多个平行的卫语句，则按照自顶向下顺序，第一个通过的分支被选择。

 例子 
public string Foo(string username) {
    if (username == null) {
        throw new ArgumentNullException(nameof(username));
    }
    // Rest of the method code follows here...
}

参考文献

外部链接
 Guard  in Free On-Line Dictionary of Computing - FOLDOC, Denis Howe (editor).
 The Haskell 98 Report, chapter 3 Expressions.
 The Mathematica Book, section 2.3.5 Putting Constraints on Patterns
 The Glorious Glasgow Haskell Compilation System User's Guide, Version 6.4, section 7.3.2. Pattern guards

Category:條件結構