プロパティのアクセスコントロール
Swiftのプロパティで、「getterは外部に公開したいけれど、setterはプライベートにしたい。けれどもcomputed propertyを使って値を保持する変数をわざわざ別に持つのは面倒だ」というケースはよくあります。
そのような場合、「private(set)
/internal(set)
」のようなアクセスレベル修飾子を変数宣言時に用います。たとえば
private(set) var foo: Int
というように記述すると、「getterはinternal、setterはprivate」というように、getter/setterでアクセス可能な範囲に変化をつけられます。「The Swift Programming Language (Swift 2.1)」の「Language Reference - Declarations」によると、アクセスレベル修飾子には次の3種類があるようです。
- access-level-modifier →
internal internal(set)
- access-level-modifier →private private(set)
- access-level-modifier →public public(set)
publicまで用意されているというのは面白いですね。使うかどうかはともかく、getterの方がアクセスレベルが緩くなるようできますので。