/ / Linee multiple tra parentesi - rubino

Linee multiple tra parentesi - rubino

La seguente istruzione condizionale multilinea restituisce risultati imprevisti.

if (false and
false and
false
true)
puts 123
end
# => 123

Si noti la condizione mancante. Mi chiedo perché l'interprete ruby ​​non abbia rilevato il problema di sintassi nella condizione.

risposte:

8 per risposta № 1

Non vi è alcun errore di sintassi lì.

Il carattere di nuova riga ha iniziato una nuova espressione, esattamente nello stesso modo punto e virgola (;) lo fa.

(false and false and false; true)
# => true

Questo operatore è come il operatore virgola trovato in C e C ++.

un operatore binario che valuta il suo primo operando e scarta il risultato, quindi valuta il secondo operando e restituisce questo valore

... e simile a a do-form in Clojure:

Valuta le espressioni in ordine e restituisce il valore dell'ultima.


3 per risposta № 2

Le dichiarazioni in righe separate vengono valutate separatamente. Semplicemente, l'ultima riga tra parentesi (ad es. true) viene restituito.