0Pricing
Swift Academy · レッスン

プロパティとサブスクリプト

lazyな格納プロパティ、get/setによる計算プロパティ、プロパティオブザーバー、カスタムインデックス用のサブスクリプトを使います。

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

導入

このレッスンでは高度なプロパティを扱います。lazyプロパティ、get/setを使った計算プロパティ、オブザーバー、カスタムサブスクリプトについて学びます。

lazyプロパティ

lazyプロパティは、初めてアクセスされたときにだけ作成されます。計算コストの高い処理に便利です。

struct DataLoader {
    lazy var data: [Int] = {
        print("Loading...")
        return [1,2,3]
    }()
}
var loader = DataLoader()
print("before access")
print(loader.data)

計算プロパティのget/set

計算プロパティは、get/setブロックを使って値を計算または更新します。

struct Circle {
    var radius: Double
    var diameter: Double {
        get { return radius * 2 }
        set { radius = newValue / 2 }
    }
}
var c = Circle(radius: 5)
print(c.diameter)  // 10
c.diameter = 20
print(c.radius)    // 10

オブザーバー

プロパティの変更に反応するには、willSetとdidSetを使用します。

class Account {
    var balance: Double = 0 {
        willSet { print("Will set to", newValue) }
        didSet  { print("Did set from", oldValue) }
    }
}
var a = Account()
a.balance = 50

サブスクリプト

サブスクリプトを使うと、角括弧構文によるカスタムアクセスを定義できます。

struct TimesTable {
    let multiplier: Int
    subscript(i: Int) -> Int {
        return multiplier * i
    }
}
let three = TimesTable(multiplier: 3)
print(three[4])   // 12

複数パラメータのサブスクリプト

サブスクリプトは複数のパラメータを受け取れます。たとえば、行と列のインデックスを持つ行列に利用できます。

struct Matrix {
    var grid: [[Int]]
    subscript(row: Int, col: Int) -> Int {
        return grid[row][col]
    }
}
let m = Matrix(grid:[[1,2],[3,4]])
print(m[1,0])   // 3

lazyの確認

クイックチェック: lazyキーワードは何をしますか?

振り返り

振り返り: 初期化を遅延するにはlazy、計算プロパティにはget/set、変更の監視にはwillSet/didSet、カスタムアクセスにはサブスクリプトを使用します。

よくある質問

「プロパティとサブスクリプト」レッスンは無料ですか?

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

「プロパティとサブスクリプト」で何を学びますか?

lazyな格納プロパティ、get/setによる計算プロパティ、プロパティオブザーバー、カスタムインデックス用のサブスクリプトを使います。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「プロパティとサブスクリプト」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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