私は Erlang を学ぼうとしており、関数やcase
ステートメントの行末でいくつかの問題に遭遇しています。
関数またはステートメント内でセミコロン ( ;
)、コンマ ( )、またはピリオドを使用するのはいつですか?,
case
私は Erlang を学ぼうとしており、関数やcase
ステートメントの行末でいくつかの問題に遭遇しています。
関数またはステートメント内でセミコロン ( ;
)、コンマ ( )、またはピリオドを使用するのはいつですか?,
case
セミコロンを OR、コンマを AND、ピリオドを END と読むのが好きです。そう
foo(X) when X > 0; X < 7 ->
Y = X * 2,
case Y of
12 -> bar;
_ -> ook
end;
foo(0) -> zero.
として読む
foo(X) when X > 0 *OR* X < 7 ->
Y = X * 2 *AND*
case Y of
12 -> bar *OR*
_ -> ok
end *OR*
foo(0) -> zero *END*
これにより、 ; がない理由が明確になります。ケースの最後の節の後。
通常のコードの行末のコンマ。
case ステートメント、または if ステートメントなどの末尾のセミコロン。最後の case または if ステートメントの末尾には何もありません。関数の終わりのピリオド。
例(ランダム変数名で申し訳ありません。明らかにこれは何もしませんが、ポイントを示しています):
case Something of
ok ->
R = 1, %% comma, end of a line inside a case
T = 2; %% semi colon, end of a case, but not the end of the last
error ->
P = 1, %% comma, end of a line inside a case
M = 2 %% nothing, end of the last case
end. %% period, assuming this is the end of the function, comma if not the end of the function
モジュールでは、ピリオドはモジュール属性と関数宣言 (別名「フォーム」) を終了するために使用されます。フォームは式ではない (フォームから値が返されない) ため、これを覚えておくことができます。したがって、ピリオドはステートメントの終わりを表します。
さまざまなアリティを持つ関数の定義は個別のステートメントと見なされるため、それぞれがピリオドで終了することに注意してください。
たとえば、hello/0
およびの関数定義hello/1:
hello() -> hello_world.
hello(Greeting) -> Greeting.
(erlang シェルでは、ピリオドは式の終了と評価に使用されますが、これは例外です。)
セミコロンは、関数句と式分岐の両方で、句区切りとして機能します。
例 1、関数句:
factorial(0) -> 1;
factorial(N) -> N * fac(N-1).
例 2、式の分岐:
if X < 0 -> negative;
X > 0 -> positive;
X == 0 -> zero
end
コンマは式の区切り記号です。コンマが式の後にある場合は、その句の後に別の式があることを意味します。
hello(Greeting, Name) ->
FullGreeting = Greeting ++ ", " ++ Name,
FullGreeting.
コンマは、式、引数、またはリスト/タプルまたはバイナリの要素を区切ります。過労です。
英語の句読点のようなものと考えることができます。コンマは一連のものを区切るために使用され、セミコロンは 2 つの非常に密接に関連する独立した節を区切るために使用されます [1] (たとえば、case ステートメントの異なるケース、異なるパターンに一致する同じ名前とアリティの関数節)、およびピリオド。文を終了するために使用されます (完全な思考)。