你如何在Swift中复制对象?
发布时间:2020-12-14 04:42:06 所属栏目:百科 来源:网络整理
导读:我有以下课程: class Client { let name: String let age: Int init(name: String,age: Int) { self.name = name self.age = age }}let wrongClient = Client(name: "John",age: 9) 如何创建具有合适年龄的新版本的wrongClient? 我想要以下内容: let righ
我有以下课程:
class Client { let name: String let age: Int init(name: String,age: Int) { self.name = name self.age = age } } let wrongClient = Client(name: "John",age: 9) 如何创建具有合适年龄的新版本的wrongClient? 我想要以下内容: let rightClient = Client(wrongClient,age: 42) 例如,OCaml允许开发人员执行以下操作: type client = { name : string; age : int; } let wrong_client = {name = "John"; age = 25} let right_client = {wrong_client with age = 42} 或者在斯卡拉: case class Client(name: String,age: Int) val wrongClient = Client(name: "John",age: 9) val rightClient = wrongClient.copy(age=42) 编辑 我想尝试使用Swift进行数据不变性和数据共享. 因为不可变数据意味着从其他值“生成”值,所以“复制”对象可能经常发生.所以我的问题是:如何使用Swift轻松地从其他对象构造新对象? 编辑2 我现在正在看Swiftz’ lenses. 解决方法
您可以将Client实现为结构而不是类,因为struct总是按值传递.
struct Client { var name: String var age: Int init(name: String,age: Int) { self.name = name self.age = age } } var wrongClient = Client(name: "John",age: 18) var rightClient = wrongClient rightClient.age = 99 将wrongClient分配给rightClient会创建一个副本.当您更新rightClient的年龄时,wrongClient仍然是18. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |