我需要在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没有明确地排除它,但它只显示一个原始的例子 .
How do you clone an array of objects in Crystal?
我可以想象在数组上执行 .map
然后以这种方式返回一个新数组,但是我只是错误地使用上面提到的克隆方法吗?
1 回答
您需要自己定义
Person#clone
,以允许您克隆Array(Person)
.一个简单的方法是def_clone宏 .