
- Erlang 教程
- Erlang - 首頁
- Erlang - 概述
- Erlang - 環境
- Erlang - 基本語法
- Erlang - Shell
- Erlang - 資料型別
- Erlang - 變數
- Erlang - 運算子
- Erlang - 迴圈
- Erlang - 決策
- Erlang - 函式
- Erlang - 模組
- Erlang - 遞迴
- Erlang - 數字
- Erlang - 字串
- Erlang - 列表
- Erlang - 檔案I/O
- Erlang - 原子
- Erlang - 對映
- Erlang - 元組
- Erlang - 記錄
- Erlang - 異常
- Erlang - 宏
- Erlang - 標頭檔案
- Erlang - 預處理器
- Erlang - 模式匹配
- Erlang - 保衛(Guards)
- Erlang - BIFS (Built-in Functions)
- Erlang - 二進位制
- Erlang - Fun (匿名函式)
- Erlang - 程序
- Erlang - 郵件
- Erlang - 資料庫
- Erlang - 埠
- Erlang - 分散式程式設計
- Erlang - OTP (Open Telecom Platform)
- Erlang - 併發
- Erlang - 效能
- Erlang - 驅動程式
- Erlang - Web程式設計
- Erlang 有用資源
- Erlang - 快速指南
- Erlang - 有用資源
- Erlang - 討論
Erlang - 保衛(Guards)
保衛(Guards)是我們可以用來增強模式匹配功能的結構。使用保衛,我們可以對模式中的變數執行簡單的測試和比較。
保衛語句的通用語法如下:
function(parameter) when condition ->
其中:
Function(parameter) − 這是在保衛條件中使用的函式宣告。
Parameter − 保衛條件通常基於引數。
Condition − 應該評估的條件,以檢視是否應該執行函式。
當指定保衛條件時,必須使用 when 語句。
讓我們快速瞭解一下如何使用保衛:
示例
-module(helloworld). -export([display/1,start/0]). display(N) when N > 10 -> io:fwrite("greater then 10"); display(N) when N < 10 -> io:fwrite("Less than 10"). start() -> display(11).
關於以上示例,需要注意以下幾點:
display 函式是與保衛一起定義的。第一個 display 宣告的保衛條件是引數 N 大於 10。因此,如果引數大於 10,則將呼叫該函式。
display 函式再次定義,但這次的保衛條件是小於 10。透過這種方式,您可以多次定義相同的函式,每個函式都有一個單獨的保衛條件。
上述程式的輸出如下:
輸出
greater than 10
保衛條件也可以用於 **if else** 和 **case** 語句。讓我們看看如何在這些語句上執行保衛操作。
‘if’ 語句的保衛
保衛也可以用於 if 語句,以便執行的語句序列基於保衛條件。讓我們看看如何實現這一點。
示例
-module(helloworld). -export([start/0]). start() -> N = 9, if N > 10 -> io:fwrite("N is greater than 10"); true -> io:fwrite("N is less than 10") end.
關於以上示例,需要注意以下幾點:
保衛函式與 if 語句一起使用。如果保衛函式計算結果為真,則顯示語句“N 大於 10”。
如果保衛函式計算結果為假,則顯示語句“N 小於 10”。
上述程式的輸出如下:
輸出
N is less than 10
‘case’ 語句的保衛
保衛也可以用於 case 語句,以便執行的語句序列基於保衛條件。讓我們看看如何實現這一點。
示例
-module(helloworld). -export([start/0]). start() -> A = 9, case A of {A} when A>10 -> io:fwrite("The value of A is greater than 10"); _ -> io:fwrite("The value of A is less than 10") end.
關於以上示例,需要注意以下幾點:
保衛函式與 case 語句一起使用。如果保衛函式計算結果為真,則顯示語句“A 的值大於 10”。
如果保衛函式計算結果為其他任何值,則顯示語句“A 的值小於 10”。
上述程式的輸出如下:
輸出
The value of A is less than 10
多個保衛條件
也可以為一個函式指定多個保衛條件。帶有多個保衛條件的保衛語句的通用語法如下:
function(parameter) when condition1 , condition1 , .. conditionN ->
其中:
Function(parameter) − 這是使用保衛條件的函式宣告。
Parameter − 保衛條件通常基於引數。
condition1, condition1, .. conditionN − 這些是應用於函式的多個保衛條件。
當指定保衛條件時,必須使用 when 語句。
讓我們快速瞭解一下如何使用多個保衛:
示例
-module(helloworld). -export([display/1,start/0]). display(N) when N > 10 , is_integer(N) -> io:fwrite("greater then 10"); display(N) when N < 10 -> io:fwrite("Less than 10"). start() -> display(11).
關於以上示例,需要注意以下幾點:
您會注意到,對於第一個 display 函式宣告,除了 N>10 的條件外,還指定了 **is_integer** 條件。因此,只有當 N 的值是整數且大於 10 時,才會執行此函式。
上述程式的輸出如下:
輸出
Greater than 10