Swiftでは、プロパティが外部で読み取り専用であるが、それを所有するクラス(およびサブクラス)によって内部で変更可能である共通パターンを定義する従来の方法は何ですか。
Objective-Cには、次のオプションがあります。
Javaの規則は次のとおりです。
Swiftのイディオムは何ですか?
@Antonioに従って、単一のプロパティを使用して、readOnly
プロパティ値としてパブリックにアクセスし、readWrite
プライベートにアクセスできます。以下は私のイラストです:
class MyClass {
private(set) public var publicReadOnly: Int = 10
//as below, we can modify the value within same class which is private access
func increment() {
publicReadOnly += 1
}
func decrement() {
publicReadOnly -= 1
}
}
let object = MyClass()
print("Initial valule: \(object.publicReadOnly)")
//For below line we get the compile error saying : "Left side of mutating operator isn't mutable: 'publicReadOnly' setter is inaccessible"
//object.publicReadOnly += 1
object.increment()
print("After increment method call: \(object.publicReadOnly)")
object.decrement()
print("After decrement method call: \(object.publicReadOnly)")
出力は次のとおりです。
Initial valule: 10
After increment method call: 11
After decrement method call: 10