プロパティとサブスクリプト
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]) // 3lazyの確認
クイックチェック: 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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- プロパティとサブスクリプト
- lazyとプロパティオブザーバー
- get/setによる計算プロパティ
- カスタムインデックス用のサブスクリプト