Erlang Guard

Guard是可以用來(lái)增加模式匹配功能的結(jié)構(gòu)。使用Guard,我們可以對(duì)模式中的變量執(zhí)行簡(jiǎn)單的測(cè)試和比較。

Guard語(yǔ)句的一般語(yǔ)法如下-

function(parameter) when condition ->

在哪里,

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

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

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

  • 當(dāng)指定了Guard條件時(shí),必須使用when語(yǔ)句。

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

實(shí)例

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

關(guān)于上述示例,需要注意以下幾點(diǎn):

  • display 函數(shù)與一個(gè)Guard一起定義。當(dāng)參數(shù) n 大于10時(shí),第一個(gè)顯示聲明有一個(gè)保護(hù)。因此,如果參數(shù)大于10,就會(huì)調(diào)用該函數(shù)。

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

上述程序的輸出如下:

greater than 10

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

if語(yǔ)句的Guard

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

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

關(guān)于上述示例,需要注意以下幾點(diǎn):

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

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

上面程序的輸出如下:

輸出

N is less than 10

“case”語(yǔ)句的Guard

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

實(shí)例

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

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

關(guān)于上述示例,需要注意以下幾點(diǎn):

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

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

上面程序的輸出如下:

輸出

A的值小于10

多重Guard條件

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

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

在哪里,

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

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

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

  • 當(dāng)指定了保護(hù)條件時(shí),必須使用when語(yǔ)句。

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

實(shí)例

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

關(guān)于以上示例,需要注意以下幾點(diǎn):

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

上面程序的輸出如下:

輸出

小于 10
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清