我在我的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
進行深度複製是一個好主意嗎?