文字列を比較するか返すかは明確ではありません。私はあなたがそれらを比較しようとしていると仮定します。
あなたのコードは、変数A
をさまざまな原子と比較しています。
-module(prac).
-export([test_if/1]).
test_if(A) ->
if
A == "sir_boss" ->
team_leader;
A == "worker1"; A == "worker2";
A == "worker3"; A == "worker4" ->
regular;
A == "me" ->
intern
end.
ワーカー比較句のセミコロンは、本質的にorelse
として機能:あなたは文字列を比較したい場合は、このようなif
を使用してそれを行うことができます。
Erlangのシェルでこれを実行すると、それが期待どおりに動作しているようだということを示しています。
1> prac:test_if("me").
intern
2> prac:test_if("worker4").
regular
しかしif
を使用してより良いアプローチは、機能ヘッドにおけるパターンマッチの引数にある:
test_if("sir_boss") -> team_leader;
test_if("worker1") -> regular;
test_if("worker2") -> regular;
test_if("worker3") -> regular;
test_if("worker4") -> regular;
test_if("me") -> intern.
これはif
を使用するよりも明確であり、より慣用的です。
もう1つ質問がありますが、代わりにリストを使用するにはどうすればよいですか? –