5
説明してもらえん:次のコードでルビーGSUBは、内容を変更していない人は、次の2行のコードの違い
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を変更します。一方、私がgsub!
と1行目を使用しても、@docには影響しません。これはブロックがそのパラメータをどのように扱うかと関係がありますか?メソッドを使って明示的にコピーされない限り、Rubyですべての参照を渡すべきではありませんか? http://nokogiri.org/Nokogiri/XML/Node.htmlをチェック
2 element.content = element.content OPによって変更する正しい方法を提案した方法であって
用い「element.content =」は、内部値を変更しない別のメソッド呼び出し.gsub( "#{i}"、 "#{a [i]}") – nilanjan