使用属性的set方法来实现可变的不可变结构体。
例如,下面是一个不可变结构体:
public struct Person {
public let name: String
public let age: Int
}
如果要更改其中一个值,例如年龄,则会遇到“不可变结构体的值正在发生变化”的问题:
var person = Person(name: "John", age: 30)
person.age = 25 // Error: Cannot assign to property: 'person' is a 'let' constant
为了实现可变的不可变结构体,可以使用属性的set方法:
public struct Person {
public let name: String
private var _age: Int
public var age: Int {
get { return _age }
set { _age = newValue }
}
public init(name: String, age: Int) {
self.name = name
self._age = age
}
}
var person = Person(name: "John", age: 30)
person.age = 25 // Now works!
这将允许您更改age属性,但仍将不可变性保留在其他属性上。
下一篇:不可变结构体具有可变引用成员