-1

多くの人がスクリプト言語で以下の表記法を使用していますが、私はそれがどのように機能するのかよくわかりません。

~$ false || echo "aa"
aa
~$ true || echo "aa"
~$ true && echo "aa"
aa
~$ false && echo "aa"
~$ 

両側が最初に実行され、次に戻り値が評価されますか?

これらを書くためのより簡単な方法は何でしょうか?

ですか?||_XOR

4

4 に答える 4

1

これはとても簡単だと思います。

毎回左側が最初に評価され、必要に応じて右側が評価されます。

前者の場合、LHSはfalseであるため、式の結果は演算であるためRHSに依存しORます。したがって、右側が評価/実行されます。

2番目のケースでは、LHSはであり、操作trueの結果はRHSに何があるかに関係なく、RHSが評価/実行されることはありません。ORtrue

操作でも同じことが起こりANDます。LHSがtrue3番目のステートメントの場合にのみ、RHSを評価する必要があります。

于 2013-02-19T10:16:45.330 に答える
1

&&andを使用し||て評価を制御することは、プログラミングにおいて非常に基本的なことです。多くの人がすでに答えているように、彼らは「短絡評価」を使用しています。一部の言語では、および と
同じですが、すべてではありません。たとえばRubyでは、まったく同じ意味ではありませ(私が知っているように)。andor

これらを書くためのより簡単な方法は何でしょうか?

&&and||の代わりに使用することは怠惰なプログラミングであると言えますが、 and構造を使用することが最も簡単であるif ... elseと言う人もいます。&&||

別の方法(またはこれをよりよく理解する方法)がある場合:

expr && echo "aa"

# is the same as

if expr; then
  echo "aa"
fi

expr || echo "aa"

# is the same as

if ! expr; then
  echo "aa"
fi

expr && echo "yes" || echo "no"

# is the same as

if expr; then
  echo "yes"
else
  echo "no"
fi

そしてもちろんミックス

if this && that; then
  echo "yes"
else
  echo "no"
fi

「短絡評価」は非常に重要なルールであり、状況によってはコードがこれに依存しています。
この例 (VIM からのものですが、多くの言語で同じです) では、動作しない場合に例外が発生します。

if exists("variable") && variable == 3 ...

結果を決定する前に両側が評価された場合、variable定義されていない場合は例外になります。

&&たとえば、結果が得られる前に両側が評価されるような設計の悪い言語がいくつかありました。

そう:

if you like it; then
  use it && be happy
else
  use it || be happy
fi
于 2013-02-19T12:05:16.467 に答える
1

これは短絡評価と呼ばれます。

||OR です (XOR ではありません)。

スクリプト (ソース コードと同様) では、右側は必要な場合にのみ評価されます。

with ||the RHS は、LHS が false または 0 と評価された場合に評価されます。 With &&the RHS は、LHS が true と評価された場合にのみ評価されます。

|| それは本当だからです || すべてが常に true であるため、RHS を評価する必要はありません。false && 何でも常に false です。

短絡評価を使用する利点も参照してください。

于 2013-02-19T10:07:00.770 に答える
1

||&&あなたがリストしたすべての言語で怠惰です。

その仕組みは、式が左から右に評価されるというものです。の場合、||式全体の値は "false-y" ではない最初の引数の値 (または、すべての引数が false-y の場合は最後の引数) が式の値になります。

于 2013-02-19T10:07:30.240 に答える