在電腦程式設計中,衛(guard)是布爾表達式,其結果必須為真,程序才能執行下去。衛語句(guard code或guard clause)用於檢查先決條件。衛語句的用途,例如:
- 引用(reference)使用前檢查是否為空引用;
- 處置模式使用一個布爾域,使得釋放資源操作成為冪等運算,即多次釋放資源等效於只釋放一次。
概述
衛語句可用於子進程的提前退出(early exit),這是結構化程序設計的一種常見偏離,可刪除一層嵌套使得代碼更扁平:[1] 把if guard { ... }
替代為:if not guard: return; ...
.
在APL、Haskell、Clean、Erlang、occam、Promela、OCaml、Swift[2]與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...
}
參考文獻
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.