Ruby && vs. Und

Ruby && vs. Und

Für boolesche Ausdrücke oder Flusskontrolle können sowohl && als auch and verwendet werden.

Der Unterschied zwischen ihnen ist die Rangfolge. Der Operator and hat einen niedrigeren Vorrang als =, während && einen höheren Vorrang als der Operator = hat.

Betrachten Sie diese beiden booleschen Ausdrücke.

puts var_1 = true && false
puts var_2 = true and false

Ausgabe:

false
true

Beide Ausdrücke geben false zurück, aber var_1 und var_2 werden unterschiedliche Werte zugewiesen.

var_1 = true && false ist äquivalent zu var_1 = (true && false), var_1 ist gleich false.

Im Gegensatz dazu wird var_2 = true und false als (var_2 = true) und false ausgewertet. Das bedeutet, dass var_2 irgendwann den Wert true enthält.

puts var_1
puts var_2

Ausgabe:

false
true

Verwenden Sie deshalb niemals and mit einem solchen ternären Operator.

s = true and 2.even? ? 'even' : 'odd'
puts s

Ausgabe:

true

Wir können erwarten, dass es even druckt, aber stattdessen gibt es true zurück.