首页 文章

克隆对象数组Crystal

提问于
浏览
2

我需要在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 回答

  • 5

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

    一个简单的方法是def_clone宏 .

    class Person
      property name : String
    
      def_clone
    end
    

相关问题