English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Guardはパターンにパターンマッチング機能を追加するための構造体です。Guardを使用することで、パターンの変数に対して簡単なテストや比較を行うことができます。
Guard文の一般的な構文は以下の通りです-
function(parameter) when condition ->
どこで、
Function(parameter) −これは保護条件下で使用される関数宣言です。
パラメータ -通常、保護条件は引数に基づいています。
Condition −条件を評価して、関数を実行するかどうかを決定します。
Guard条件が指定された場合、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
上記の例について、以下の点に注意してください:
display関数はGuardと一緒に定義されています。引数nが大きい場合、10の場合、最初の表示宣言に保護があります。したがって、引数が大きい場合、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が大きい」が表示されます。10”。
guard関数の計算結果がfalseの場合、文「Nが小さい」が表示されます。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) −保護条件を使用した関数宣言です。
パラメータ -通常、保護条件は引数に基づいています。
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