【Swift】計算型プロパティ(Computed Properties)をゼロから解説

【Swift】 計算型プロパティって?

Swiftには、自身が値をもたず、構造体の他のプロパティにアクセスして、値をセットしたり値を取得する計算型プロパティが存在します。

この記事では、筆者が疑問に感じた

  • 計算型プロパティって何?
  • 計算型プロパティはどうやって使うの?

をもとに計算型プロパティに対する個人的な理解をゼロからまとめてみました。

ぜひ、参考にしてみてください!

目次

計算型プロパティ(Computed Properties)とは

計算型プロパティ (Computed Properties)は、構造体・クラス・列挙型で定義されるプロパティの一つです。

このプロパティは、他のプロパティにアクセスできる代わりに、自身に値を持ちません。

計算型プロパティは、他のプロパティの値や他のプロパティの値の計算値をセットしたり、値を取得することができます。

まず、プロパティというのは構造体やクラスなどの変数や定数のことを指します。

プロパティは大きく以下の2つに分類されます。

  • 格納型プロパティ
  • 計算型プロパティ

格納型プロパティ(Stored Properties)

格納型プロパティは、プロパティそのものが値を保持し、メモリに格納される変数です。

struct Price {
    var JPY: Double // 格納型プロパティ
    var tax_rate: Double // 格納型プロパティ
}

計算型プロパティ(Computed Properties)

一方、計算型プロパティは、自身が値を保持しないプロパティです。
その代わり、構造体やクラスなどの他のプロパティを参照することができます。

言葉通り、値をセットしたり取得したりするために計算を行います。
計算型プロパティには、他のプロパティを参照して値を計算を行うgetと値を取得して計算を行うsetが存在します。

struct Price {
    var JPY: Double
    var tax_rate: Double
    
    var taxIncluded: Double { // 計算型プロパティ
        get {
            return JPY * tax_rate
        }
        set {
            JPY = newValue / tax_rate
        }
    }
}
var price: Price = Price(JPY: 100, tax_rate: 1.1)
price.taxIncluded // getのブロックコードが実行される
price.taxIncluded = 220 // 値がnewValueに格納され、setのブロックコードが実行される

この例では、Priceタイプの変数priceJPY = 100, tax_rate = 1.1で初期化されています。

price.taxIncludedが実行される時は、getのブロックコードが実行されます。

price.taxIncluded = 220が実行される時は、set のブロックコードが実行されます。
newValueに値220 がセットされた後、JPY = newValue / tax_rateが実行されます。

値を保持しない変数って面白い🤔
計算型プロパティはgetとsetで2通りの使い方ができるのか

計算型プロパティの応用的な使い方

計算型プロパティで値をセットする時は、デフォルトのnewValueを使わない方法もあります。

struct Price {
    var JPY: Double
    var tax_rate: Double
    
    var taxIncluded: Double {
        get {
            return JPY * tax_rate
        }
        set(value) { // 引数に使いたい引数名を指定する
            JPY = value / tax_rate
        }
    }
}
var price: Price = Price(JPY: 100, tax_rate: 1.1)
price.taxIncluded
price.taxIncluded = 220

setには、newValueがデフォルトで使用されますが、引数を指定することで使いたい引数名でブロックコードの処理を記述することができます。

まとめ

この記事では、計算型プロパティ(Computed Properties)について解説しました。

  • 構造体やクラスなどの変数や定数はプロパティと呼ばれる
  • プロパティには格納型プロパティ(Stored Properties)と計算型プロパティ(Computed Properties)がある
  • 計算型プロパティは、自身が値をもたないプロパティ
  • 計算型プロパティを使うことで、他のプロパティを参照して値を計算したり、値を取得して計算したりできる
【Swift】 計算型プロパティって?

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

よぴのアバター よぴ Swift / iOSエンジニア

ゼロから始めるSwift/iOSエンジニア
デザインや開発に携わる人たちと繋がって、学び合える関係を作りたいです。

▷ iOSアプリ個人開発
▷ 2022/10/01からスタート
▷ 制作過程や学んだことをブログに載せていきます

目次