【Swift】Computedプロパティの使い方。set、getメソッドの定義と省略 | はじはじアプリ体験記

Swift
【Swift】Computedプロパティ(計算プロパティ)の使い方。

  • 2016年3月6日
    Swift 2.1で検証
  • Twitterでシェア
  • Facebook
  • LINEで送る

Computedプロパティとは

Computedプロパティ(計算プロパティ)とは、関数を通してクラスのプロパティを取得、設定する機能のことをいい、以下のように定義する。

 

普段使うプロパティはStoredプロパティ(格納プロパティ)と呼ばれ、プロパティの値を取得、設定するときは以下のコードのように「インスタンス名.プロパティ名」でアクセスし、値は直接設定される。

 

一方、Computedプロパティを使うと、「インスタンス名.プロパティ名」でアクセスしたときに、値を取得するときはgetメソッド、値を設定するときはsetメソッドが自動で呼び出される。

例えば、以下はゲームの成績を記録するクラスの例で、打撃回数(hit_number)がComputedプロパティになる。

インスタンスを使う側は「インスタンス名.hit_number」のようにアクセスするので、打撃回数そのものにアクセスしているかのように感じるが、実際は、getメソッド、または、setメソッドを処理した結果が取得、計算されている。

このようにComputedプロパティは、他のプロパティの値をもとに算出できてしまう場合や、プロパティにアクセスする直前に何かしらのチェックや計算が必要な場合に利用できる。

スポンサーリンク

引数やメソッドを省略する

setメソッドに定義した引数名は、名前にこだわりが無ければ省略できる。省略した場合はnewValueという引数名になる。プロパティ名や引数名など似たような名前を定義すると紛らわしいので、setメソッドの引数名は常に省略したほうがスッキリして良い。

 

以下のコードのように、setメソッド自体を省略することもできる。省略すると打撃回数(hit_number)の値を設定することができなくなり、取得専用のプロパティになる。

 

もし、setメソッドを省略したComputedプロパティに値を設定しようとするとコンパイルエラーになる。

 

また、getのみのComputedプロパティにしたからといって、以下のコードのようにプロパティをlet(定数)で宣言することはできない。なぜなら、setメソッドが無くなってプロパティの値を変更できなくなったが、getメソッド内の処理によってはいつも同じ値が取得されるとは限らないので「定数では無い」ということである。

 

Swift記事一覧へ
  • Twitterでシェア
  • Facebook
  • LINEで送る
はじはじビットコイン目指せ!最強の暗号通貨トレーダー

コメントを残す

お名前