我有一个叫Meal的课程
class Meal {
var name : String = ""
var cnt : Int = 0
var price : String = ""
var img : String = ""
var id : String = ""
init(name:String , cnt : Int, price : String, img : String, id : String) {
self.name = name
self.cnt = cnt
self.price = price
self.img = img
self.id = id
}
}
而且我有很多餐:
var ordered = [Meal]()
我想复制该数组,然后在其中一个实例中对Meal实例进行一些更改,而在第二个实例中不更改Meal实例,我将如何对其进行深拷贝?
问题内容: 我想使用构造函数制作对象数组的深层副本。 但是,由于某种原因,我上面的内容不起作用。我有运行的自动化测试,但未通过这些测试。所以这里有一个错误,我不确定是什么。 问题答案: 您已实现的是 浅表 副本。要实现 深度 复制,您必须进行更改 一些事情,分配一个 副本 的到。您如何执行此操作取决于班级。可能的替代方法是: 复制构造函数: 工厂方法: 克隆: 笔记: 上面假设复制构造函数,工厂方
问题内容: 实现深层对象复制功能有点困难。您采取什么步骤来确保原始对象和克隆对象没有引用? 问题答案: 一种安全的方法是序列化对象,然后反序列化。这样可以确保所有内容都是全新的参考。 这是有关如何有效执行此操作的文章。 注意事项:类可能会覆盖序列化,这样就不会创建新实例,例如单例。如果您的课程不是可序列化的,那么这当然也行不通。
编辑:@Rohit Jain 我的Recipe类和Ingreatent类(Recipe数组保存的对象)都有toString方法和recipes对Ingreats的调用,以便以一个漂亮的小格式将其全部打印出来。当我在我的“recipeone”对象(即意大利辣香肠披萨)上调用它时,我得到的是“意大利辣香肠披萨:1.0磅面团,8.0盎司酱汁,10.0盎司奶酪”。 然后我继续制作对象ressippi并将其
问题内容: 我正在使用。我想将对象的值复制到另一个对象中。我尝试用encoding / gob和encoding / json做到这一点。但是gob编码比json编码花费更多的时间。我看像其他一些问题,这和他们建议采空区编码应该是更快的。但我看到完全相反的行为。有人可以告诉我我做错了什么吗?还是有比这两个更好,更快的方法来进行深度复制?我的对象的结构是复杂且嵌套的。 测试代码: 我得到以下输出:
问题内容: 从某些索引开始,肯定有一些使用Swift拷贝数组末尾的非常优雅的方法,但是我只是找不到它,所以我以此结束: 有没有其他功能的更好方法吗? 问题答案: 还有一个… 这给出了对于大多数目的来说应该足够好的。如果您需要一个真实的,请使用 如果起始索引大于(或等于)元素计数,则会创建一个空数组/切片。
问题内容: 我只是在数组上使用过,以为这是一个深复制。 如何执行阵列的深层复制? 我应该遍历它并执行一系列的操作吗? 问题答案: 是的,你应该遍历2D布尔数组以进行深复制。如果你使用的是Java 6,请同时查看方法。 我建议使用Java 6的下一个代码: