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 № 1Non 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.