亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

Erlang Guard

Guard是可以用來增加模式匹配功能的結構。使用Guard,我們可以對模式中的變量執(zhí)行簡單的測試和比較。

Guard語句的一般語法如下-

function(parameter) when condition ->

在哪里,

  • Function(parameter) ?這是在保護條件下使用的函數(shù)聲明。

  • Parameter ?通常,保護條件基于參數(shù)。

  • Condition ?評估條件,以確定是否應執(zhí)行函數(shù)。

  • 當指定了Guard條件時,必須使用when語句。

讓我們看一下如何使用守衛(wèi)的簡單示例-

實例

-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 函數(shù)與一個Guard一起定義。當參數(shù) n 大于10時,第一個顯示聲明有一個保護。因此,如果參數(shù)大于10,就會調用該函數(shù)。

  • 再次定義了 display 函數(shù),但這次的保護小于10。通過這種方式,您可以多次定義同一個函數(shù),每個函數(shù)都有一個單獨的Guard條件。

上述程序的輸出如下:

greater than 10

保護條件也可用于 if else 和 case 語句。讓我們看看如何對這些語句執(zhí)行保護操作。

if語句的Guard

Guard也可用于if語句,以便執(zhí)行的一系列語句基于保護條件。讓我們看看如何才能做到這一點。

-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.

關于上述示例,需要注意以下幾點:

  • guard函數(shù)與if語句一起使用。如果guard函數(shù)的計算結果為true,則顯示語句“N大于10”。

  • 如果guard函數(shù)的計算結果為false,則顯示語句“N小于10”。

上面程序的輸出如下:

輸出

N is less than 10

“case”語句的Guard

保護還可以用于case語句,以便執(zhí)行的一系列語句基于保護條件。讓我們看看如何實現(xiàn)這一目標。

實例

-module(helloworld). 
-export([start/0]). 

start() -> 
   A = 9, 
   case A of {A} when A>10 -> 
      io:fwrite("A的值大于10"); _ -> 
      io:fwrite("A的值小于10") 
   end.

關于上述示例,需要注意以下幾點:

  • guard函數(shù)與case語句一起使用。如果guard函數(shù)的計算結果為true,則顯示語句“A的值大于10”。

  • 如果guard函數(shù)的計算結果為其他值,則會顯示語句“A的值小于10”。

上面程序的輸出如下:

輸出

A的值小于10

多重Guard條件

也可以為函數(shù)指定多個保護條件。具有多個保護條件的保護語句的一般語法如下-

function(parameter) when condition1 , condition1 , .. conditionN ->

在哪里,

  • Function(parameter) ?這是使用保護條件的函數(shù)聲明。

  • Parameter ?通常,保護條件基于參數(shù)。

  • condition1, condition1, .. conditionN ?這些是應用于函數(shù)的多重保護條件。

  • 當指定了保護條件時,必須使用when語句。

讓我們看一下如何使用多個守衛(wèi)的簡單示例-

實例

-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("小于 10"). 
   
start() -> 
   display(11).

關于以上示例,需要注意以下幾點:

  • 您將注意到,對于第一個display函數(shù)聲明,除了N>10的條件外,還指定了is\u integer的條件。因此,只有當N的值是整數(shù)且大于10時,才會執(zhí)行此函數(shù)。

上面程序的輸出如下:

輸出

小于 10