[Swift] コードスニペット subscript

     
⌛️ < 1 min.
忘れてしまった時に コピペで使用できるスニペットシリーズ subscript 編

環境&対象

以下の環境で動作確認を行なっています。

  • 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 という言語についても同様の書籍を出しています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です