以下の概念を正しく理解しているかどうかを明確にしたいと思います。計算されたプロパティの利点(取得可能なもののみ)対ストアドプロパティ
String
"Good morning, Mike"
を変数var sayGoodMorningToUser
に格納することを目標とします。
Stringはすなわち
var greeting = "Good morning, "
var username = "Mike"
私は他の言葉で、計算されたプロパティ対保存されたプロパティを使用している場合、それはどのような違いを生むん、二つの変数で構成されています
var sayGoodMorningToUserStored = greeting + username
対
var sayGoodMorningToUserComputed:String {
return greeting + username
}
私がこれらの2つのアプローチの間に見る唯一の違いは、誰でも変更できることですsayGoodMorningToUserStoredの値は、簡単かつ直接的に、例えば、
var sayGoodMorningToUserComputed = "Hallo" //this would cause an error
人々は、単に変数を計算する代わりに、なぜそうしないと、私は理解することはできません。それは単に新しい文字列値に設定することはできませんので、変数sayGoodMorningToUserComputedは、直接変更することはできません一方
var sayGoodMorningToUserStored = "myNewChangedValue"
を書き込むことにより、書く
var sayGoodMorningToUserStored = greeting + username.
私はそれを正しく理解すれば誰でも説明できますか?あるいは、計算された変数と保存された変数の利点は他にありますか?
ここで設定可能な変数について議論すると、スコープを超えてしまうため、私はgettable変数のみに制限したいと思います。
計算されたプロパティの目的は、それを一度宣言し、 'username'が変更されたときに、計算された" greeting "プロパティが自動的に更新されてそれを反映します。したがって、 'username'が変更された場合、' sayGoodMorningToUserStored'も更新することを覚えておく必要はありません。あなたがコード中の他の場所を参照すると、 'sayGoodMorningToUserStored'が最初に宣言されたときの' username'ではなく 'username'の現在の値が自動的に反映されます。 – Rob
私が今考えている主な違いは、プロトコルとプロトコルの拡張です。プロトコルでは状態を保持できないため、計算値が最適です。 – jonmecer
@Pisanあなたの質問が満足されていると感じたら、受け入れられたように質問にレートを付けてください。 – Alexander