gpt4 book ai didi

swift - 如何复制结构并同时修改其属性之一?

转载 作者:IT王子 更新时间:2023-10-29 05:34:19 24 4
gpt4 key购买 nike

如果我想将我的 View Controller 的状态表示为单个结构,然后实现撤消机制,我将如何更改结构上的一个属性,同时获取先前状态的副本?

struct A {
let a: Int
let b: Int

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

let state = A()

现在我想要一个 state 的副本,但 b = 4。如何在不构造新对象且不必为每个属性指定值的情况下执行此操作?

最佳答案

请注意,当您为常量 ab 使用占位符值时,您无法构造A 与除此占位符之外的任何其他值。改为编写初始化程序。您还可以编写自定义方法来更改结构中的任何值:

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)

关于swift - 如何复制结构并同时修改其属性之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38331277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com