get
(ゲッター)とset
(セッター)は使いこなすと非常に使い勝手がいい仕様です。
だいたいは、その画像の説明の通りなのですが、少し言い方を変えると、
ただのプロパティのように扱える、メソッドのようなものとも言えると思います。
get
は、通常プロパティとして呼び出した際に実行され、ブロック内の処理を実行しつつ、ブロック内の最終行の値をそのプロパティ値として返します。
一方set
は、通常プロパティのように値を代入した際に呼び出され、set(代入した値)
といったようにして、中の構文を実行します。
では、このget
とset
、使うとどう便利かというと、今回の書籍の構文では、radius
を変えるだけで、diameter
とaround
の値(が入っているわけではないが)を一発で変えることができるという利点があります。
今回の書籍の画像のことを、set
とget
を使わずに実装するとなると、下記のように、七面倒なことをせねばなりません。
swift
1var radius = 10.0
2
3var diameter: Double = 0
4var around: Double = 0
5
6// クラスの初期化
7init(){
8 self.diameter = self.radius * 2
9 self.around = self.radius * 2 * Double.pi
10}
11
12// radiusの値を変えるたびに、initで実行していることを実行し、値を変えなければ、diameterとaroundの変化させられない。
13// その上、setで実行してる、radiusの値のコントロールも、別メソッドで実装しなければいけなくなる
あとは、tyobigorouさんのおっしゃる通り、今は使い方だけ覚えて先進んだ方がいいかも。
使いこなすのは、現段階では、少し難しいかもなーとお見受けします。