Oggi ho incontrato questo strano comportamento della linea di Ruby se e bloccare seDifferenza tra linea se condizionale e il blocco se condizionale in Ruby
2.0.0-p247 :001 > inline_if = 'value will not set but no error' if inline_if
=> nil
2.0.0-p247 :002 > if block_if
2.0.0-p247 :003?> block_if = 'forget about setting value, I will raise an error'
2.0.0-p247 :004?> end
NameError: undefined local variable or method `block_if' for main:Object
from (irb):2
from /Users/myuser/.rvm/rubies/ruby-2.0.0-p247/bin/irb:13:in `<main>'
Qual è la differenza tra linea se condizionato e blocco se condizionale?
Dove hai definito 'block_if'? – Santhosh
'inline_if' e' block_if' non sono definiti. Ma usando il blocco se l'istruzione genera un errore mentre in linea non genera alcun errore. – Hardik
Eccone un altro: 'a = b.nil? => NameError: variabile locale non definita o metodo 'b' per main: Object', ma 'a = a.nil? => true'. @YuHao spiega perché. Verso la fine di uno dei suoi [articoli] sempre interessanti (http://www.rubyinside.com/what-rubys-double-pipe-or-equals-really-does-5488.html), Peter Cooper ha messo questo modo: "Cioè, un assegnamento variabile, anche se non eseguito, richiama immediatamente quella variabile in essere." Domanda interessante –