我有一个对象,它有一个名为my_array
的实例变量数组。我通过attr_accessor
宣布它。更改克隆对象的值
my_object.my_array = [1,2,3] # <= I don't know the max size of my_array(it can be dynamic)
我想与my_object
创建相同的对象,并填写其my_array
只有一个元素。该元素中的值是来自my_array
的元素(来自my_object
)的每个值。因为my_array
的大小是动态的,所以我想我需要通过each
来重复它。
这里是我的尝试:
my_object.my_array.each do |element| # <= my_object is a special object
new_object = nil unless new_object.nil?
new_object = my_object.clone # <= I create new object with same class with my_object
new_object.my_array.clear # <= clear all element inside it.
new_object.my_array.push(element) # assign element value to the first element.
# rest of code #
new_object = nil
end
迭代不正确的迭代。 my_object.my_array
的大小是3,那么它应该迭代三次,但不是,它只是迭代一次。我相信这是因为new_object.my_array.clear
,但我从my_object
克隆它,为什么发生这种情况?
哦,你是让我的日子,我太感谢你了:) – LuminaChen 2014-09-23 16:03:18