Erlang-경비원
가드는 패턴 매칭의 힘을 높이는 데 사용할 수있는 구조입니다. 가드를 사용하여 패턴의 변수에 대한 간단한 테스트와 비교를 수행 할 수 있습니다.
가드 문의 일반 구문은 다음과 같습니다.
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).
위의 예에 대해 다음 사항에 유의해야합니다.
표시 기능은 가드와 함께 정의됩니다. 첫 번째 디스플레이 선언에는 매개 변수 N이 10보다 클 때 가드가 있습니다. 따라서 매개 변수가 10보다 크면 해당 함수가 호출됩니다.
표시 기능이 다시 정의되지만 이번에는 가드가 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 is less than 10"문이 표시됩니다.
위 프로그램의 출력은 다음과 같습니다.
산출
N is less than 10
'사례'진술에 대한 가드
가드를 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).
위의 예에 대해 다음 사항에 유의해야합니다.
첫 번째 표시 함수 선언의 경우 N> 10에 대한 조건 외에도 is_integer또한 지정됩니다. 따라서 N의 값이 정수이고 10보다 큰 경우에만이 함수가 실행됩니다.
위 프로그램의 출력은 다음과 같습니다.
산출
Greater than 10