0

私はアーランで働いています

Cin と Id が null でないかどうかをチェックする関数を作成したい

私は試しました:

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

    end.

'&&' の概念が erlang に存在しないことは知っています。

しかし、私はerlangでこの概念に相当するものを見つけることができません

4

3 に答える 3

6

通常、一致を使用することをお勧めします。

case {Cin, Id} of
  {null, _} -> cin_null;
  {_, null} -> id_null;
  {_, _}    -> not_null
end

ただし、まったくチェックしなくても問題を解決できることにも注意してください。ファンクションヘッドにガードを追加します。

my_func(Cin, Id) when is_integer(Cin), is_binary(Id) ->
  do_something.

これが一致しない場合、クラッシュが発生しますが、これは通常、コードベースで発生すると予想されることです。

于 2012-12-27T13:51:03.740 に答える
6

Erlang では、andalso代わりに&&次を使用します。

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

の使用はandalso短絡であり、 と同等&&です。通常のand演算子は常に式の両側を評価し、ショートサーキットではありません。

于 2012-12-27T10:04:57.003 に答える