15

LearnYouSomeErlang Web ブックから Erlang を学んでいます。学習中に私を襲ったことの1つは、非短絡ブール演算子および論理和演算子です。andor。これらのオペレーターの使用例は何ですか? andalsoなぜandの代わりにそれらを使用したいのorelseですか?

4

3 に答える 3

13

以前は (R13A まで)末尾再帰ではありませんでしたandalsoorelse詳細については、 http://www.erlang.org/eeps/eep-0017.htmlを参照してください。新しいプログラムでand/orを使う正当な理由はないと思います。

于 2011-11-11T09:06:06.043 に答える
5

私はそれらが異なることをしていると考えており、そのように使用しています。

  • and/or論理値を比較する論理演算子として。それらは厳密であるため、自動的に型チェックが行われ、何が呼び出されたかが正確にわかります。
  • andalso/コントロール用、 Cとorelseよく似ています。&&||

エラーが erlang で定義されているのを見て、何が実行され、どのように実行されたかを知るのは良いことだと思います。

于 2011-11-11T12:08:08.937 に答える
4

and/or 演算子は単に古いものです。andalso/orelse 演算子は後で追加されます。and/or 今日の使用例は、いくつかの単純なブール演算を実行したいだけで、マシン サイクルを節約するよりも水平方向のスペースの方が重要な場合です。例えば:

X = Y and (A or B),

それよりも

X = Y andalso (A orelse B),

目には少し楽です。

下位互換性の理由から、元の動作を変更したり、ショートサーキットになったりすることはできなかったため、新しいキーワードが必要でした。名前 andalso/orelse は標準 ML に由来します。

于 2011-11-11T10:07:15.127 に答える