如何在erlang中的if语句中放入一个字符串?

时间:2016-12-06 01:22:04

标签: erlang

-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语句中正确放置列表或字符串?

1 个答案:

答案 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更清晰,更惯用。