lazyとプロパティオブザーバー
遅延処理にはlazyな格納プロパティを使い、willSet/didSetで格納プロパティの変更を監視します。
「lazyとプロパティオブザーバー」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。
概要
このレッスンでは、2つの重要な要素、つまりlazyな格納プロパティとプロパティオブザーバー(willSet/didSet)に焦点を当てます。
lazyプロパティ
lazyは、初めてアクセスされるまで生成を遅延させます。コストの高い処理や、selfが必要な場合に便利です。
struct DataLoader {
lazy var data: [Int] = {
print("Loading data...")
return [1, 2, 3]
}()
}
var loader = DataLoader()
print("before access")
print(loader.data) // triggers initialization only nowlazyとself
クラスではlazyを使用して、初期化後にselfに依存する値へアクセスできます。
class CacheOwner {
let name: String
lazy var hello: String = "Hi, " + name // uses self safely after init
init(name: String) { self.name = name }
}
let co = CacheOwner(name: "Ada")
print(co.hello)プロパティオブザーバー
オブザーバーは、格納プロパティの変更前後に処理を追加します。状況を把握するには、newValueとoldValueを使用します。
struct Counter {
var value: Int = 0 {
willSet { print("will set to", newValue) }
didSet { print("did set from", oldValue) }
}
}
var c = Counter()
c.value = 5
c.value = 9didSetで値を制限する
didSetを使用すると、代入後に値を正規化または範囲内に制限できます。
struct Score {
var raw: Int = 0 {
didSet {
if raw < 0 { raw = 0 }
if raw > 100 { raw = 100 }
}
}
}
var s = Score()
s.raw = 120 // clamped to 100
print(s.raw)
s.raw = -5 // clamped to 0
print(s.raw)注記
注記:
- lazyを使用できるのはvarの格納プロパティだけです。
- オブザーバーは格納プロパティに適用されます。計算プロパティでは、代わりにget/setのロジックを使用します。
- ストレージの準備が整っていない初期化中は、オブザーバーは呼び出されません。
lazyの意味
確認問題:lazyは何をするものでしょうか?
まとめ
まとめ:時間のかかる初期設定を遅延させるにはlazyを使用し、単純なルールで格納プロパティの変更に反応するにはwillSet/didSetを使用します。
よくある質問
「lazyとプロパティオブザーバー」レッスンは無料ですか?
はい。「lazyとプロパティオブザーバー」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。
「lazyとプロパティオブザーバー」で何を学びますか?
遅延処理にはlazyな格納プロパティを使い、willSet/didSetで格納プロパティの変更を監視します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「lazyとプロパティオブザーバー」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- プロパティとサブスクリプト
- lazyとプロパティオブザーバー
- get/setによる計算プロパティ
- カスタムインデックス用のサブスクリプト