プロパティをいじってほしくなくて、読み取り専用(readonly)にしたいことはよくあるかと思う。そんなときに private(set) という便利なものがある。
Swiftでreadonlyにする – private(set)を使う –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class User { private(set) var name = "sato" func update() { name = "apple" } } // 同ファイルから let user = User() user.name = "apple" // エラー print(user.name) // "apple" // 別ファイルから let user2 = User() user2.name = "apple" // エラー print(user2.name) // "sato" |
こんな感じで、クラス内からはsetできるけど外からはエラーになる。
もちろん読み取りは別ファイルからもできるよ。