Может кто-нибудь объяснить, пожалуйста, разницу между следующими двумя строками кода:
1. element.content.gsub!("#{i}", "#{a[i]}")
2. element.content = element.content.gsub("#{i}", "#{a[i]}")
В следующем коде:
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
Код, представленный выше, действительно меняет @doc. Хотя, если я использую строку 1 с gsub!
, это не повлияет на @doc. Связано ли это с тем, как блоки обрабатывают свои параметры? Разве все не должно передаваться по ссылке в Ruby, если оно явно не скопировано с помощью метода?