Swift Academy · レッスン

get/setによる計算プロパティ

get/setを使って計算プロパティ(読み取り専用と読み書き可能)を作成し、セッターで不変条件を守り、private(set)などのアクセス制御を使います。

レッスン 3/48 ステップ

「get/setによる計算プロパティ」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

概要

計算プロパティはアクセス時に値を導出し、set時に状態を同期できます。不変条件を整理して保つために使用します。

読み取り専用の計算プロパティ

読み取り専用の計算プロパティではsetを省略します。導出処理は単純かつ低コストに保ちます。

struct Rectangle {
    var width: Double
    var height: Double
    var area: Double {             // read-only computed
        width * height
    }
}
let r = Rectangle(width: 3, height: 4)
print("area =", r.area)  // 12

読み書き可能なget/set

get/setを追加すると、関連する値を同期させられる読み書き可能な計算プロパティを作成できます。

struct Circle {
    var radius: Double            // stored
    var diameter: Double {        // computed read–write
        get { radius * 2 }
        set { radius = newValue / 2 }
    }
}
var c = Circle(radius: 5)
print(c.diameter)   // 10
c.diameter = 14
print(c.radius)     // 7

setterでの検証

setterで入力を検証できます。カスタム名を指定しない場合は、暗黙のnewValueという名前を使用できます。

struct Percentage {
    private var _raw: Int = 0          // backing store
    var value: Int {
        get { _raw }
        set {                          // uses implicit newValue
            _raw = min(100, max(0, newValue))
        }
    }
}
var p = Percentage()
p.value = 120
print(p.value)  // 100
p.value = -5
print(p.value)  // 0

private(set)

private(set)を使用すると、値の読み取りは公開したまま、書き込みを型自体に制限できます。

struct ScoreBoard {
    private(set) var highScore = 0   // public read, internal write
    mutating func update(_ v: Int) {
        if v > highScore { highScore = v }
    }
}
var s = ScoreBoard()
s.update(30)
print(s.highScore)
// s.highScore = 50  // error outside the type

注記とヒント

注記:

  • 計算プロパティはデータを保存せず、必要に応じて計算します。
  • willSet/didSetはサポートしないため、代わりにsetにロジックを記述します。
  • getterは高速に保ち、時間のかかる処理はメソッドに記述します。

計算プロパティの定義

確認問題:計算プロパティを定義するものは何でしょうか?

まとめ

まとめ:読み取り専用および読み書き可能な計算プロパティを作成し、setで入力を検証します。また、データを変更できる範囲の制御にはprivate(set)を使用します。

無料で開始

AI チューターと学ぶ Swift — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
122
レッスン
409

よくある質問

「get/setによる計算プロパティ」レッスンは無料ですか?

はい。「get/setによる計算プロパティ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「get/setによる計算プロパティ」で何を学びますか?

get/setを使って計算プロパティ(読み取り専用と読み書き可能)を作成し、セッターで不変条件を守り、private(set)などのアクセス制御を使います。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「get/setによる計算プロパティ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. プロパティとサブスクリプト
  2. lazyとプロパティオブザーバー
  3. get/setによる計算プロパティ
  4. カスタムインデックス用のサブスクリプト
← Swift Academyに戻る