忘れてしまった時に コピペで使用できるスニペットシリーズ subscript 編
Sponsor Link
環境&対象
以下の環境で動作確認を行なっています。
- macOS Ventura 13.4
- Xcode 14.3
- iOS 16.0
subscript とは?
Swift での オブジェクトにアクセスする手段の1つです。
配列(Array)要素 では よく見る表現が、names が Array<String> として定義されている時に、names[0] というアクセスです。
このアクセスは、保持されている最初の String 要素へのアクセスになります。
Swift では、このような 角括弧( [ ] のこと) を使ったアクセスは、subscript(s) と呼ばれます。
The Swift Programming Language でのドキュメントは、こちら。
subscript を定義する(read-write)
以下は、subscript を定義する方法です。例では、角括弧内に与える引数は Int で、返り値も Int として書かれていますが、あくまで例です。
subscript(index: Int) -> Int {
get {
// Return an appropriate subscript value here.
}
set(newValue) {
// Perform a suitable setting action here.
}
}
subscript を定義する(read-only)
computed property などと同じように、get だけできる subscript を定義することも可能です。以下のようになります。
read-write の例と同様に、使用されている型 Int は、あくまで例です。
subscript(index: Int) -> Int {
get {
// Return an appropriate subscript value here.
}
}
get しか定義しないのであれば、以下のように記述を省略することができます。
subscript(index: Int) -> Int {
// Return an appropriate subscript value here.
}
なお、set のみ定義することはできません。
まとめ
角括弧を使ったオブジェクトへのアクセス (subscript) の定義方法
実際に値を保持せず、計算等によって算出される プロパティの定義
- subscript を使用して定義する
- read-write に使うのであれば、get/set の両方を定義する
- read-only に使うのであれば、get のみ定義する
- get のみ定義するのであれば、 get { } は省略できる
- set のみは定義できない
説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。
Swift学習におすすめの本
詳解Swift
Swift の学習には、詳解 Swift という書籍が、おすすめです。
著者は、Swift の初期から書籍を出していますし、Swift の前に主力言語だった Objective-C という言語についても同様の書籍を出しています。