2017-07-13 19 views
0

私はScalaの&と& &の違いを理解しようとしています。私はScalaの&と&&の違いは?

& <を検索した後にこれを得た - 両方のオペランド

& & <を検証 - 結果は

が誰か缶falseになりますので、最初のオペランドがfalseと評価された場合に評価を停止します同じことを例として明解でないものとして説明し、両方のオペランドの検証がここで何を意味するのかを説明します。ブーリアンについて話しているのですか?

+0

ビット演算子は整数でしか動作しないと思います...それ以外は[他の言語と同じです](https://stackoverflow.com/q/35301/1048572) – Bergi

+0

https:// stackoverflow .com/questions/9688343/why-doesnt-the-bitwise-operator-short-circuit – Bergi

答えて

4

どちらもスカラの論理AND演算子です。最初の形式、&は、例えば、両方のオペランドの値を評価します:私たちは知っているものの、

val first = false 
val second = true 

if (first & second) println("Hello!") 

があれば条件を終了する前に、両方のfirstsecondを評価することfalseは、論理ANDその式全体に表示されたらすでに虚偽をもたらすでしょう。

これは&&のためのもので、評価を短絡するのはfirstの値を評価してから条件を終了することだけです。

ビット単位のAND(&)を使用すると、ほとんどのプログラミング言語に似た、整数に対するビット単位の演算を実行できます。

+0

&&の場合、最初の値が真であることが判明したら? – NeoWelkin

+0

@NeoWelkin次に、 'second'も式の結果を判断するために評価されます。なぜなら、それは今それに依存しているからです。 –

関連する問題