我在我的Ruby代码的结构体,看起来有点像这个为什么String :: sub!()在Ruby中更改克隆对象的原始内容?
Parameter = Struct.new(:name, :id, :default_value, :minimum, :maximum)
后,我创建使用
freq = Parameter.new('frequency', 15, 1000.0, 20.0, 20000.0)
在某一点上的这种结构的情况下,我需要这样的精确副本结构,所以我打电话
newFreq = freq.clone
然后,我改变newFreq
的名字
newFreq.name.sub!('f', 'newF')
奇迹般地,它也改变了freq.name
!
像newFreq.name = 'newFrequency'
这样的简单任务不会改变freq
。
这是应该这样工作的方式?
编辑:使用类而不是结构和重载clone
进行深度复制是一个好主意吗?