English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Guard는 패턴 매칭 기능을 추가할 수 있는 구조입니다. Guard를 사용하면 패턴 내의 변수에 간단한 테스트와 비교를 수행할 수 있습니다.
Guard 문의 일반 문법은 다음과 같습니다-
function(parameter) when condition ->
어디서
Function(parameter) −이는 보호 조건하에서 사용되는 함수 선언입니다.
Parameter −보통 보호 조건은 매개변수에 기반합니다.
Condition −조건을 평가하여 함수가 실행되어야 하는지 결정합니다.
Guard 조건을 지정했을 때, when 문을 사용해야 합니다.
Guard를 사용하는 간단한 예제를 보여드리겠습니다-
-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 함수를 정의합니다. 매개변수 n이10제한 사항이 있을 때, 첫 번째 display 선언에 보호가 있습니다. 따라서 매개변수가10이면, 해당 함수가 호출됩니다.
다시 display 함수를 정의했지만, 이번에는 보호 조건이 작은10。이렇게 하면 동일한 함수를 여러 번 정의할 수 있으며, 각 함수는 독립적인 Guard 조건을 가집니다.
위 프로그램의 출력은 다음과 같습니다:
greater than 10
보호 조건은 if else와 case 문에도 사용될 수 있습니다. 이러한 문에 대한 보호 작업을 어떻게 수행하는지 보여드리겠습니다.
Guard는 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.
위 예제에 대해 다음 사항을 주의해야 합니다:
guard 함수와 if 문을 함께 사용합니다. guard 함수의 계산 결과가 true 인 경우, "N is greater than" 문장이 표시됩니다.10”。
guard 함수의 계산 결과가 false 인 경우, "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("A의 값이10"); _ -> io:fwrite("A의 값이10") end.
위 예제에 대해 다음 사항을 주의해야 합니다:
guard 함수와 case 문을 함께 사용합니다. guard 함수의 계산 결과가 true 인 경우, "A의 값이" 문장이 표시됩니다.10”。
guard 함수의 계산 결과가 다른 값이면, "A의 값이" 문장이 표시됩니다.10”。
위 프로그램의 출력은 다음과 같습니다:
A의 값이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("소于人 10) start() -> display(11)
위 예제에 대해 주의해야 할 몇 가지 사항이 있습니다:
첫 번째 display 함수 선언에 대해 N>10의 조건 외에도 is\u integer 조건을 지정했습니다. 따라서 N의 값이 정수이고10이 함수가 실행될 때만.
위 프로그램의 출력은 다음과 같습니다:
소于人 10