克隆对象数组 Crystal
Clone array of objects Crystal
我需要在 Crystal 中创建对象数组的克隆。
cloned_person_array = persons.clone #[Person, Person, Person]
但我收到以下错误:
undefined method 'clone' for Person
Array(T).new(size) { |i| @buffer[i].clone.as(T) }
我意识到此方法不适用于代码定义的非基元。 documentation 没有明确排除它,但它只显示了一个原始示例。
如何克隆 Crystal 中的对象数组?
我可以想象对数组执行 .map
然后以这种方式返回一个新数组,但我很好奇是否我只是错误地使用了上面提到的克隆方法?
您需要自己定义 Person#clone
,才能克隆 Array(Person)
。
一个简单的方法是 def_clone
宏。
class Person
property name : String
def_clone
end
我需要在 Crystal 中创建对象数组的克隆。
cloned_person_array = persons.clone #[Person, Person, Person]
但我收到以下错误:
undefined method 'clone' for Person
Array(T).new(size) { |i| @buffer[i].clone.as(T) }
我意识到此方法不适用于代码定义的非基元。 documentation 没有明确排除它,但它只显示了一个原始示例。
如何克隆 Crystal 中的对象数组?
我可以想象对数组执行 .map
然后以这种方式返回一个新数组,但我很好奇是否我只是错误地使用了上面提到的克隆方法?
您需要自己定义 Person#clone
,才能克隆 Array(Person)
。
一个简单的方法是 def_clone
宏。
class Person
property name : String
def_clone
end