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.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren