プロパティに Get と Set を使用する必要がある理由について調査していました。
その主な理由は3つあることに気づきました
- 実際にプロパティを設定する前に何かをしたい/確認したい場合
- そこからのみ取得できるプロパティが必要な場合(おそらくセキュリティ上の理由からだと思いますか?)、または異なるアクセスレベルを付与したい場合。
- 代替表現を使用してプロパティを公開しながら、プロパティの内部表現を非表示にします。(とにかく Set 関数を使用して間違った場所にアクセスできるので、私にとってはあまり意味がありません)
以下のコードは、Swift でプロパティの Get および Set を実装する方法の例であり、前述の 3 つのポイントを利用しています。
class Test
{
private var _testSet:String!
private var _testGetOnly:String
var testSet:String{
get{
return _testSet
}
set{
_testSet = newValue + "you forgot this string"
}
}
var testGetOnly:String!{
get{
return _testGetOnly
}
}
init(testSet:String, testGetOnly:String)
{
_testSet = testSet
_testGetOnly = testGetOnly
}
}
しかし、以下のこの他の例も、前述のポイントを利用していますが、別の計算されたプロパティを使用してプライベート プロパティ値を返す代わりに、willSet および didSet オブザーバーを使用するだけです。
class Test
{
var testGet:String {
willSet{
fatalError("Operation not allowed")
}
}
var testWillSet:String!{
didSet{
self.testWillSet = self.testWillSet + "you forgot this string"
}
}
init(testGet:String, testWillSet:String)
{
self.testGet = testGet
self.testWillSet = testWillSet
}
}
したがって、各実装の利点と欠点を知りたいと思っています。
前もって感謝します