Czy ktoś mógłby wyjaśnić różnicę między następującymi dwiema liniami kodu:Ruby gsub nie zmienia zawartości podczas ustawiania zawartości robi
1. element.content.gsub!("#{i}", "#{a[i]}")
2. element.content = element.content.gsub("#{i}", "#{a[i]}")
w poniższym kodzie:
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
kod przedstawiony powyżej zmienia @doc. Podczas korzystania z wiersza 1 z gsub!
nie ma to wpływu na @doc. Czy ma to związek z tym, jak bloki radzą sobie z ich parametrami? Czy nie powinno się przekazywać wszystkiego przez referencje w Ruby, chyba że jest to jawnie skopiowane za pomocą metody?
jest metoda zaproponowana przez PO właściwą drogę do zmian 2. element.content = element.content .gsub ("# {i}", "# {a [i]}") – nilanjan