加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 如何复制结构并同时修改其中一个属性?

发布时间:2020-12-14 05:23:23 所属栏目:百科 来源:网络整理
导读:如果我想将我的视图控制器的状态表示为单个结构然后实现撤销机制,那么我如何更改结构上的一个属性,同时获取前一个状态的副本? struct A { let a: Int let b: Int init(a: Int = 2,b: Int = 3) { self.a = a self.b = b }}let state = A() 现在我想要一个状
如果我想将我的视图控制器的状态表示为单个结构然后实现撤销机制,那么我如何更改结构上的一个属性,同时获取前一个状态的副本?
struct A {
   let a: Int
   let b: Int

   init(a: Int = 2,b: Int = 3) {
      self.a = a
      self.b = b
   }
}

let state = A()

现在我想要一个状态的副本,但是b = 4.如果不构造新对象并且必须为每个属性指定一个值,我怎么能这样做呢?

请注意,虽然对常量a和b使用占位符值,但是除了此占位符之外,您无法使用任何其他值构造A的实例.写初始化器.您可以编写自定义方法来更改struct中的任何值:
struct A {
    let a: Int
    let b: Int

    init(a: Int = 2,b: Int = 3) {
        self.a = a
        self.b = b
    }

    func changeValues(a: Int? = nil,b: Int? = nil) -> A {
        return A(a: a ?? self.a,b: b ?? self.b)
    }
}

let state = A()
let state2 = state.changeValues(b: 4)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读