Il params
che contiene i parametri della richiesta è in realtà una chiamata al metodo che restituisce un hash contenente i parametri. La linea params =
si assegna a una variabile locale denominata params
.
Dopo il blocco if false
, Ruby ha visto la variabile locale params
in modo che quando si fa riferimento a params
tardi nel metodo la variabile locale ha la precedenza sulla chiamata al metodo con lo stesso nome. Tuttavia, poiché l'assegnazione di params =
si trova all'interno di un blocco if false
, la variabile locale non viene mai assegnata a un valore, pertanto la variabile locale è nil
.
Se si tenta di fare riferimento a una variabile locale prima di assegnare ad esso avrete una NameError:
irb(main):001:0> baz
NameError: undefined local variable or method `baz' for main:Object
from (irb):1
Tuttavia, se v'è un incarico alla variabile che non è nel percorso di esecuzione di codice poi Rubino ha creato la variabile locale ma il suo valore è nil
.
irb(main):007:0> baz = "Example" if false
=> nil
irb(main):008:0> baz
=> nil
"Ruby ha visto i parametri locali" davvero, Ruby ??? VERAMENTE!!!??? O_o (mi dispiace, ma mi è costato diversi giorni ... Vedere non è in esecuzione, vero?) – steffen