English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La guardia è una struttura che può essere utilizzata per aumentare le funzionalità di abbinamento dei modelli. Utilizzando la guardia, possiamo eseguire test e confronti semplici sulle variabili del modello.
La sintassi generale della frase guardia è la seguente -
function(parameter) when condition ->
Dove
Function(parameter) −Questa è la dichiarazione di funzione utilizzata nelle condizioni di protezione.
Parameter −Di solito, le condizioni di protezione sono basate su parametri.
Condizione −Valutare la condizione per determinare se eseguire la funzione.
Quando si specifica una condizione di guardia, è necessario utilizzare la frase when.
Vediamo come utilizzare un esempio semplice di guardia -
-module(helloworld). -export([display/1,start/0]). io:fwrite("10大于"); display(N) when N < 10 -> io:fwrite("Meno", "第2段": maggiore di 10") start() -> display(11).
Riguardo agli esempi sopra menzionati, è necessario notare i seguenti punti:
La funzione display è definita con una guardia. Quando il parametro n è maggiore di 10, la prima dichiarazione di display ha una protezione. Pertanto, se il parametro è maggiore di 10, viene chiamata la funzione.
Ridefinite la funzione display, ma questa volta la protezione è minore di 10. In questo modo, puoi definire la stessa funzione più volte, con una condizione di guardia separata per ciascuna funzione.
L'output del programma sopra è il seguente:
maggiore di 10
Le condizioni di protezione possono anche essere utilizzate nelle statement if else e case. Vediamo come possiamo eseguire operazioni di protezione su queste statement.
La guardia può anche essere utilizzata nelle statement if, in modo che una serie di statement eseguita sia basata sulle condizioni di protezione. Vediamo come possiamo fare questo.
-module(helloworld). -export([start/0]). start() -> N = 9, if N > 10 -> io:fwrite("N è maggiore di 10"); true -> io:fwrite("N è minore di 10") end.
Riguardo agli esempi sopra menzionati, è necessario notare i seguenti punti:
La funzione di guardia viene utilizzata insieme alla statement if. Se il risultato del calcolo della funzione di guardia è true, viene visualizzato lo statement“N è maggiore di 10”.
Se il risultato del calcolo della funzione di guardia è false, viene visualizzato lo statement“N è minore di 10”.
上面程序的输出如下:
N è minore di 10
La protezione può anche essere utilizzata nelle statement case, in modo che una serie di statement eseguita sia basata sulle condizioni di protezione. Vediamo come possiamo raggiungere questo obiettivo.
-module(helloworld). -export([start/0]). start() -> A = 9, case A of {A} when A>10 -> io:fwrite("A Il valore è maggiore di 10"); _ -> io:fwrite("A Il valore è minore di 10") end.
Riguardo agli esempi sopra menzionati, è necessario notare i seguenti punti:
La funzione di guardia viene utilizzata insieme alla statement case. Se il risultato del calcolo della funzione di guardia è true, viene visualizzato lo statement“A Il valore è maggiore di 10”.
Se il risultato del calcolo della funzione di guardia è un altro valore, viene visualizzato lo statement“A Il valore è minore di 10”.
上面程序的输出如下:
Il valore di A è minore di 10
Le condizioni di protezione multiple possono anche essere specificate per una funzione. La sintassi generale di una protezione con condizioni multiple è come segue-
function(parameter) quando condition1, condition1, .. conditionN ->
Dove
Function(parameter) −Questa è la dichiarazione della funzione che utilizza le condizioni di protezione.
Parameter −Di solito, le condizioni di protezione sono basate su parametri.
condition1, condition1, .. conditionN −这些是应用于函数的多重保护条件。
当指定了保护条件时,必须使用when语句。
让我们看一下如何使用多个守卫的简单示例-
-module(helloworld). -export([display/1,start/0]). display(N) when N > 10 , is_integer(N) -> io:fwrite("10大于"); display(N) when N < 10 -> io:fwrite("10小于"). start() -> display(11).
关于以上示例,需要注意以下几点:
您将注意到,对于第一个display函数声明,除了N>10的条件外,还指定了is\u integer的条件。因此,只有当N的值是整数且大于10时,才会执行此函数。
上面程序的输出如下:
10小于