2016-12-06 18 views
1
-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文に正しく挿入するにはどうすればよいですか?erlangのif文に文字列を挿入する方法は?

答えて

2

文字列を比較するか返すかは明確ではありません。私はあなたがそれらを比較しようとしていると仮定します。

あなたのコードは、変数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を使用するよりも明確であり、より慣用的です。

+0

もう1つ質問がありますが、代わりにリストを使用するにはどうすればよいですか? –

関連する問題