我的 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
!
一个简单的赋值 likenewFreq.name = 'newFrequency'
不会改变freq
。
这是应该的工作方式吗?
编辑:使用类而不是结构和重载clone
来进行深层复制是个好主意吗?