答えて
if
a == b ->
expr1;
true ->
exprElse
end
本当の他には、あなただけの真のと一致、Erlangではありません。詳細はErlang documentationをご覧ください。
あなたは ';'に細心の注意を払わなければなりません。ターミネーター:
if
a == b ->
clauseN,
expr1;
cond2 ->
clause1,
clause2,
expr2;
cond3 ->
expr3;
true ->
exprElse
end
コピーペースト言語ではありません。
if
A =:= B ->
expr1;
true ->
expr2
end
または
case A =:= B of
true -> expr1;
false -> expr2
end
または
case A of
B -> expr1;
_ -> expr2
end
または
foo(A,B), ...
...
foo(X,X) -> expr1;
foo(_,_) -> expr2.
パターンマッチングはアーラン多くの強みの一つであり、if文では、多くの場合、代わりに使用することができます。関数の引数をパターンマッチングするか、(パターンマッチングでもある)case式を使用する方が読みやすくなります。
2つの引数をとる関数some_function
があるとします。引数が等しい場合はexpression1を評価し、そうでない場合はexpression2を評価します。あなたが単純なパターンマッチングのこの種では達成することができますどのくらいの非常に素晴らしいです
some_function(A, A) -> expression1;
some_function(A, B) -> expression2.
:これは、Erlangで表現することができます。ガード句を使用すると、より複雑なパターンを表現することができ、例えば、
some_function(A, B) when A < B -> expression3.
別の可能性はcase .. of
表現を使用することです。あなたの特定の例は
case a == b of
true -> expression1;
false -> expression2
end.
に変換でしょう(a
とb
が等しく原子、決してあるので、この場合はexpression2
は常に評価されます。Erlangでの変数は大文字です。)
あなたは読むことができますErlangの式hereの詳細。
代わりに '=:= '=='の これは本当に良い答えです。新しいerlangプログラマーは 'if'ステートメントが' when'ステートメントであったはずの理由を理解するまで常に 'case'を使うべきです。 – archaelus
別のオプション:
case a of
b -> expr1; %% true
_ -> expr2 %% false
end.
- 1. シングルサインオン - 実装方法
- 2. GestureListener.onFling()メソッドの実装方法
- 3. データヒストリアンの実装方法は?
- 4. BOOST_TYPEOFの実装方法は?
- 5. ASIHttpRequestの実装方法
- 6. ハッシュマップの実装方法
- 7. Sencha Pickerの実装方法
- 8. ローパスフィルタの実装方法
- 9. IAsyncOperationWithProgressの実装方法
- 10. jScrollの実装方法は?
- 11. JavaScriptデザインパターンの実装方法
- 12. Wordpressページネゴシエーションの実装方法
- 13. LAMP:スケジューリングの実装方法
- 14. RoRサイトの実装方法
- 15. .NETデータセットの実装方法
- 16. JavaScriptカスケードの実装方法..?
- 17. HTTPトンネリングの実装方法
- 18. リモートコントロールアプリケーションの実装方法は?
- 19. インタフェースの実装方法は
- 20. スタック実装Trollfaceの方法
- 21. ページネーションの実装方法
- 22. ソフトリンクvimdiffの実装方法
- 23. is_stl_vectorの実装方法
- 24. Android:テンキーパッドの実装方法
- 25. jspブラウザアクションの実装方法
- 26. カテゴリシステムの実装方法
- 27. バックオフィスコントローラの実装方法
- 28. 屋内ナビゲーション用のSteerPath SDK実装の実装方法
- 29. VSCode実装方法ショートカット
- 30. 電子メールコントローラ - 実装方法
また、[この質問](http://stackoverflow.com/questions/4327860/erlang-equivalent-to-if-else)を参照してください。 – legoscia