LearnYouSomeErlang Web ブックから Erlang を学んでいます。学習中に私を襲ったことの1つは、非短絡ブール演算子および論理和演算子です。and
とor
。これらのオペレーターの使用例は何ですか? andalso
なぜandの代わりにそれらを使用したいのorelse
ですか?
3 に答える
13
以前は (R13A まで)末尾再帰ではありませんでしたandalso
。orelse
詳細については、 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 に答える