初期値はnilで、その後1回値を代入したら、その後何度代入しても値が変わらないプロパティを実装したい。
didSetを使うと、以下のようにシンプルに実装できました。
struct User {
var id: Int? {
didSet {
if oldValue != nil {
id = oldValue
}
}
}
}
var user = User()
print(user.id) // 初期値はnil
user.id = 1
print(user.id) // 1に変わった
user.id = 2
print(user.id) // 1のまま変わらない