Có thể ai đó xin vui lòng giải thích sự khác biệt giữa hai dòng mã sau đây:của Ruby gsub không làm thay đổi nội dung trong khi thiết lập các nội dung không
1. element.content.gsub!("#{i}", "#{a[i]}")
2. element.content = element.content.gsub("#{i}", "#{a[i]}")
Trong đoạn mã sau:
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
Các mã như đã trình bày ở trên không thay đổi @doc. Mặc dù nếu tôi sử dụng dòng 1 với gsub!
thì nó không có hiệu lực trên @doc. Điều này có liên quan đến cách khối xử lý các tham số của chúng không? Không phải tất cả mọi thứ sẽ được thông qua bằng cách tham chiếu trong Ruby trừ khi sao chép rõ ràng bằng cách sử dụng một phương pháp?
là phương pháp của OP đề xuất đúng cách để thực hiện thay đổi 2. element.content = element.content .gsub ("# {i}", "# {a [i]}") – nilanjan