我有以下课程:
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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。