【发布时间】:2017-03-15 18:46:19
【问题描述】:
我在 HTML 中使用嵌入式 Ruby,并尝试创建一个新变量;但是,这似乎是在修改代码上的 HTML 格式,即使我只是想创建一个新变量并修改它。似乎当我操纵 newfood 时,我也在改变存储在“food”中的值(几乎以通过引用的方式)。如何按值传递它(如果可能)?
<% newfood = food%>
<% newfood.gsub!('a','b')%>
【问题讨论】:
我在 HTML 中使用嵌入式 Ruby,并尝试创建一个新变量;但是,这似乎是在修改代码上的 HTML 格式,即使我只是想创建一个新变量并修改它。似乎当我操纵 newfood 时,我也在改变存储在“food”中的值(几乎以通过引用的方式)。如何按值传递它(如果可能)?
<% newfood = food%>
<% newfood.gsub!('a','b')%>
【问题讨论】:
您可以为此使用 clone 或 dup 函数。
在你的食物是一个字符串的情况下,它们都可以工作。
newfood = food.dup
newfood = food.clone
函数的工作方式有点不同,这是 ruby-doc 所说的:
一般来说,clone 和 dup 在后代类中可能有不同的语义。虽然 clone 用于复制对象,包括其内部状态,但 dup 通常使用后代对象的类来创建新实例。 http://ruby-doc.org/core-2.4.0/Object.html#method-i-dup-label-on+dup+vs+clone
【讨论】: