【Swift】Computedプロパティ(計算プロパティ)の使い方。【Swift】Computedプロパティ(計算プロパティ)の使い方。2020年6月16日ComputedプロパティとはComputedプロパティ(計算プロパティ)とは、関数を通してクラスのプロパティを取得、設定する機能のことをいい、以下のように定義する。{処理}}普段使うプロパティはStoredプロパティ(格納プロパティ)と呼ばれ、プロパティの値を取得、設定するときは以下のコードのように「インスタンス名.プロパティ名」でアクセスし、値は直接設定される。//TestClassインスタンスを生成しscoreの値を変更する。print("\(test.name)さんのスコアは\(test.score)点です。//田中さんのスコアは2000点です。1000}//TestClassインスタンスを生成しscoreの値を変更する。2000print("\(test.name)さんのスコアは\(test.score)点です。")//実行結果//田中さんのスコアは2000点です。Computedプロパティを使うと、「インスタンス名.プロパティ名」でアクセスしたときに、値を取得するときはgetメソッド、値を設定するときはsetメソッドが自動で呼び出される。以下はゲームの成績を記録するクラスの例で、打撃回数(hit_number)がComputedプロパティになる。インスタンスを使う側は「インスタンス名.hit_number」のようにアクセスするので、打撃回数そのものにアクセスしているかのように感じるが、実際は、getメソッド、または、setメソッドを処理した結果が取得、計算されている。このようにComputedプロパティは、他のプロパティの値をもとに算出できてしまう場合や、プロパティにアクセスする直前に何かしらのチェックや計算が必要な場合に利用できる。//得点÷ゲーム難易度を返す。//打撃回数×ゲーム難易度を得点に設定する。//ゲーム成績インスタンスに打撃回数を設定する。print("打撃回数は\(result.hit_number)回です。//打撃回数は150回です。{//得点÷ゲーム難易度を返す。{//打撃回数×ゲーム難易度を得点に設定する。level}}}//ゲーム成績インスタンスに打撃回数を設定する。150print("打撃回数は\(result.hit_number)回です。")//実行結果//打撃回数は150回です。引数やメソッドを省略するsetメソッドに定義した引数名は、名前にこだわりが無ければ省略できる。省略した場合はnewValueという引数名になる。プロパティ名や引数名など似たような名前を定義すると紛らわしいので、setメソッドの引数名は常に省略したほうがスッキリして良い。setメソッドの引数を省略する。//得点÷ゲーム難易度を返す。//打撃回数×ゲーム難易度を得点に設定する。//ゲーム成績インスタンスに打撃回数を設定する。print("打撃回数は\(result.hit_number)回です。//打撃回数は150回です。setメソッドの引数を省略する。{//得点÷ゲーム難易度を返す。{//打撃回数×ゲーム難易度を得点に設定する。level}}}//ゲーム成績インスタンスに打撃回数を設定する。150print("打撃回数は\(result.hit_number)回です。")//実行結果//打撃回数は150回です。以下のコードのように、setメソッド自体を省略することもできる。省略すると打撃回数(hit_number)の値を設定することができなくなり、取得専用のプロパティになる。setメソッドを省略する。//得点÷ゲーム難易度を返す。//ゲーム成績インスタンスに打撃回数を設定する。print("打撃回数は\(result.hit_number)回です。//打撃回数は333回です。setメソッドを省略する。{//得点÷ゲーム難易度を返す。level}}}//ゲーム成績インスタンスに打撃回数を設定する。GameResultClass()print("打撃回数は\(result.hit_number)回です。")//実行結果//打撃回数は333回です。setメソッドを省略したComputedプロパティに値を設定しようとするとコンパイルエラーになる。//得点÷ゲーム難易度を返す。//ゲーム成績インスタンスに打撃回数を設定する。{//得点÷ゲーム難易度を返す。level}}}//ゲーム成績インスタンスに打撃回数を設定する。propertyまた、getのみのComputedプロパティにしたからといって、以下のコードのようにプロパティをlet(定数)で宣言することはできない。setメソッドが無くなってプロパティの値を変更できなくなったが、getメソッド内の処理によってはいつも同じ値が取得されるとは限らないので「定数では無い」ということである。Computedプロパティは定数(let)で定義することはできない。//得点÷ゲーム難易度を返す。Computedプロパティは定数(let)で定義することはできない。{//得点÷ゲーム難易度を返す。【Swift】レイジープロパティ(lazy)の使い方。最初にアクセスされたときに初期値が決まる。外部ファイルに保存されない一時的な属性を定義する。...【Swift】SpriteKitの使い方。Transitionを利用してシーンの切り替えを格好良くする。Recognizerの使い方。画面端のドラッグを検知する。...【Swift】SpriteKitの使い方。コメントをキャンセルメールアドレスが公開されることはありません。