使用if与erlang进行比较

fra*_*cci 0 erlang

我和erlang一起工作

我想创建一个函数来检查Cin和Id是否为空

我尝试过:

if Cin /= null && Id/=null -> {ok,Cin et Id sont différents de null};
     true -> {nok,Cin et Id sont  null}

    end.
Run Code Online (Sandbox Code Playgroud)

我知道在erlang中不存在'&&'的概念

但我在erlang中找不到这个概念的等价物

Gre*_*ill 6

在Erlang中,使用andalso而不是&&:

if Cin /= null andalso Id/=null -> {ok,Cin et Id sont différents de null};
Run Code Online (Sandbox Code Playgroud)

使用andalso是短路的,相当于&&.常规and运算符始终评估表达式的两侧并且不会短路.


I G*_*ERS 6

通常,最好使用匹配:

case {Cin, Id} of
  {null, _} -> cin_null;
  {_, null} -> id_null;
  {_, _}    -> not_null
end
Run Code Online (Sandbox Code Playgroud)

但是请注意,你可以完全没有检查.在功能头中添加一个保护:

my_func(Cin, Id) when is_integer(Cin), is_binary(Id) ->
  do_something.
Run Code Online (Sandbox Code Playgroud)

如果这不匹配,则会发生崩溃,但这通常是您希望在代码库中发生的情况.