衛語句
在計算機程序設計中,衛(guard)是布爾表達式,其結果必須為真,程序才能執行下去。衛語句(guard code或guard clause)用於檢查先決條件。衛語句的用途,例如:
概述
編輯衛語句可用於子進程的提前退出(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...
}
參考文獻
編輯- ^ Beck, Kent. Guard Clause. Smalltalk Best Practice Patterns,. 1997: 178–179.
- ^ Cook, Nate. guard & defer. NSHipster. [2016-02-26]. (原始內容存檔於2020-11-25).
外部連結
編輯- 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