Ho riscontrato un problema interessante mentre utilizzavo il metodo "tocca" sugli oggetti di tipo "String".Il metodo "tocca" sull'oggetto String non restituisce il risultato previsto
"abc".tap { |o| o = "xyz" } # this line returns "abc" instead of "xyz"
Il metodo "tocca" funziona su oggetti di altri tipi.
[].tap { |o| o << "xyz" } # this line returns ["xyz"] as expected
Sto usando Rails 2.3.2 e Ruby 1.8.6 su Windows XP.
Cosa mi manca qui?
Aggiornamento 1: ho risolto questo problema. È stato un errore di utilizzo da parte mia. Nel primo scenario stavo riassegnando il valore al parametro block invece di modificarlo. Sono stato in grado di riscrivere il codice e ottenere il risultato previsto.
"abc".tap { |o| o.replace "xyz" }
Aggiornamento 2: il codice utilizzato qui è solo per dimostrare il problema. Il mio codice attuale non assomiglia a questo.
Potremmo avere un esempio reale di ciò che stai cercando di fare? –
Ho risolto questo problema. È stato un errore di utilizzo da parte mia. Nel primo scenario stavo riassegnando il valore al parametro di blocco invece di modificarlo. Sono stato in grado di riscrivere il codice e ottenere il risultato previsto. "abc" .tap {| o | o.replace "xyz"} –