それは実際にはコードの直前に説明されています:
格納される単純なプロパティに加えて、プロパティはゲッターとセッターを持つことができます。
class EquilateralTriangle: NamedShape {
...
他のクラスがその境界変数を取得したい場合、次のようにします。
let someVar = myTriangle.perimeter
...これはこれを呼び出します:
get{
return 3.0 * self.sideLength
}
したがって、呼び出し側のコントローラーがこれを実行した場合と基本的に同じです。
let someVar = 3.0 * myTriangle.sideLength
別のオブジェクトから変数を設定すると、次のようになります。
myTriangle.perimeter = 100
これにより、set{}
ブロック内のコードが呼び出されます。
set {
sideLength = newValue / 3.0
}
そして、それは変数を設定しているクラスがこれを行っていたようなものです:
myTriangle.sideLength = 100/3.0
それは本当に便宜上のものです -変数を設定する直前と変数を取得する直前に行われるため、常に3で除算したり乗算したりする必要なく、他のコードからこれを呼び出すことができます。
Swiftでは、取得時に計算され、設定時に何かを実行できるプロパティを持つことができます。Objective-Cでもこれを行うことができます。
// .h
@property (nonatomic) double perimeter;
//.m
- (double)perimeter
{
return self.sideLength * 3.0;
}
- (void)setPerimeter:(double)perimeter
{
self.perimeter = perimeter; // In Swift, this is done automatically.
self.sideLength = perimeter / 3.0;
}