Podría alguien explicar la diferencia entre las siguientes dos líneas de código:Rubí gsub no cambia el contenido al establecer el contenido hace
1. element.content.gsub!("#{i}", "#{a[i]}")
2. element.content = element.content.gsub("#{i}", "#{a[i]}")
En el siguiente código:
a.each_index do |i|
@doc.traverse do |element|
if element.text?
element.content = element.content.gsub("#{i}", "#{a[i]}")
end
end
end
puts @doc
El el código como se presenta arriba cambia @doc. Si bien utilizo la línea 1 con gsub!
, no tiene efecto en @doc. ¿Tiene esto que ver con cómo los bloques manejan sus parámetros? ¿No debería pasar todo por referencia en Ruby a menos que se haya copiado explícitamente usando un método?
es el método propuesto por el PO de la manera correcta de hacer cambios 2. element.content = element.content .gsub ("# {i}", "# {a [i]}") – nilanjan