克隆对象Crystal

时间:2018-01-29 05:00:55

标签: crystal-lang

我需要在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然后以这种方式返回一个新数组,但我很好奇我是否只是错误地使用上面提到的克隆方法?

1 个答案:

答案 0 :(得分:5)

您需要自己定义Person#clone,以便克隆Array(Person)

执行此操作的简便方法是def_clone宏。

class Person
  property name : String

  def_clone
end