-module(prac).
-export([test_if/1]).
test_if(A) ->
if
A == sir_boss ->
team_leader;
A == worker1 or worker2 or worker3 or worker4 ->
regular;
A == me ->
intern
end.
如何在if语句中正确放置列表或字符串?
答案 0 :(得分:2)
目前尚不清楚您是想比较字符串还是返回字符串;我假设你正在尝试比较它们。
您的代码正在将变量A
与各种原子进行比较。如果您想比较字符串,可以使用if
这样做:
-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
。
在Erlang shell中运行它表明它看起来像预期的那样:
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
更清晰,更惯用。