[Swift] コードスニペット computed property

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

環境&対象

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

  • macOS14.2 RC
  • Xcode 15.1 RC
  • iOS 17.2
  • Swift 5.9

computed property (readonly)

Swift では 実際に値を保持せず、要求された時点で 計算等により算出する property を定義することができます。
computed property と呼ばれます。

The Swift Programming Language での説明は、こちら

get を定義することは必須ですが、set の定義は必須ではありません。
set が定義されていないと、Read-only な property となります。

外部からは、参照だけでき 設定できない状態に見えるので、let で定義されている stored property や private(set) 指定されている property と同様に見えます。

コード例

class MyClass {
  var myReadOnlyProperty: Int {
    get {
      return Int.random(0..10)
    }
  }
}

computed property (read/write)

get/set を定義することで、外部からは、stored property と同様に見えることになります。

コード例

class MyClass {
  var alwaysEvenVar: Int
  var myReadWriteProperty: Int {
    get {
      alwaysEvenVar / 2
    }
    set(newValue) {
      alwaysEvenVar = newValue * 2
    }
  }
}

注意点:
上記例では、stored property である alwaysEvenVar を使っていますが、set と get で別々の property を操作することも可能ですし、受け取った情報を破棄するのも自由です。

まとめ

実際に値を保持せず、要求時点で 計算等によって算出される プロパティの定義

実際に値を保持せず、計算等によって算出される プロパティの定義
  • get で定義される処理でプロパティが算出される
  • set の定義は任意。定義しないと Read-only なプロパティとして扱われる
  • get/set で他の property を使った計算も可能

説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。

Swift学習におすすめの本

詳解Swift

Swift の学習には、詳解 Swift という書籍が、おすすめです。

著者は、Swift の初期から書籍を出していますし、Swift の前に主力言語だった Objective-C という言語についても同様の書籍を出しています。

最新版を購入するのがおすすめです。

現時点では、上記の Swift 5 に対応した第5版が最新版です。

コメントを残す

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