0

J'essaie de comprendre la différence entre & et & & dans Scala. Je suis arrivé ce après avoir cherchéDifférence entre & et && dans Scala?

& < - vérifie les deux opérandes

& & < - arrête d'évaluer si le premier opérande est évaluée à false car le résultat sera faux

Quelqu'un peut-il expliquer la même chose avec l'exemple que je ne suis pas clair, ce qui signifie vérifier les deux opérandes ici. Parlons-nous seulement des Booléens?

+0

Je pense que les opérateurs de bits ne fonctionneraient que sur les entiers ... A part ça, c'est juste le [même que dans n'importe quel autre langage] (https://stackoverflow.com/q/35301/1048572) – Bergi

+0

https: // stackoverflow .com/questions/9688343/why-doesnt-the-bitwise-opérateur-court-circuit – Bergi

Répondre

4

Les deux sont des opérateurs AND logiques dans Scala. La première forme, &, évaluera les valeurs des opérandes, par exemple:

val first = false 
val second = true 

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

aura-t-évaluer à la fois first et second avant de quitter la condition if, même si nous savons qu'une fois qu'un false apparaît dans une logique ET, cette expression toute va déjà donner faux.

C'est ce que && est pour, et ce qu'il fait est de court-circuiter l'évaluation, ce qui signifie que vous n'évaluez que la valeur de first, puis quittez le conditionnel.

Vous pouvez utiliser l'AND binaire (&) pour effectuer des opérations au niveau du bit sur les entiers, ce qui est similaire à la plupart des langages de programmation.

+0

Si la première valeur s'avère être vraie dans le cas de &&, alors? – NeoWelkin

+0

@NeoWelkin Ensuite, 'second' sera également évalué pour déterminer le résultat de l'expression, car il en dépend maintenant. –