Quando lista degli argomenti di una chiamata al metodo di Ruby finisce in una o più coppie chiave-valore, come foo: 'bar'
o 'foo' => 1
, Ruby li raccoglie in un unico hash e passa che hash come ultimo parametro. Si può vedere che se stessi in irb
:
irb(main):002:0> puts foo: 'bar', baz: 'quux'
{:foo=>"bar", :baz=>"quux"}
=> nil
Così, è possibile aggiungere un parametro finale, opzionale per un metodo che si sta scrivendo a ricevere questo hash. Normalmente vorrai impostarlo su un hash vuoto. È possibile chiamare il parametro tutto quello che vuoi, ma options
è un nome comune:
def my_method(a, b, c, options = {})
...
end
Un trucco utile se si sta utilizzando Rails: E 'spesso utile per il trattamento di stringhe e simboli semplici come equivalenti. Rails aggiunge un metodo symbolize_keys!
-Hash
per convertire tutte le chiavi di stringa per simboli:
def my_method(a, b, c, options = {})
options.symbolize_keys!
...
end
fonte
2013-05-15 23:36:37
U rock man! Grazie :) – facundofarias
Grazie, ben spiegato: D +1 –