0Pricing
Swift Academy · Урок

Хранимые и вычисляемые свойства, наблюдатели

Определяйте хранимые и вычисляемые свойства, создавайте свойства только для чтения и get/set, а также реагируйте на изменения с помощью наблюдателей willSet/didSet.

«Хранимые и вычисляемые свойства, наблюдатели» — бесплатный урок Swift Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 3 уроков всего.

Обзор

В этом уроке сопоставляются хранимые и вычисляемые свойства, а также показывается, как наблюдатели willSet/didSet реагируют на изменения.

Хранимые и вычисляемые

Хранимые свойства сохраняют данные. Вычисляемые свойства вычисляют значение при обращении к ним.

struct Rectangle {
    // stored properties (hold data)
    var width: Double
    var height: Double

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

Вычисляемые свойства: чтение и запись

Добавьте получение/установку, чтобы создать вычисляемое свойство для чтения и записи, поддерживающее согласованность инвариантов.

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

Наблюдатели в действии

Наблюдатели выполняются до и после изменений хранимого свойства. Используйте newValue/oldValue для получения контекста.

struct Counter {
    var value: Int = 0 {
        willSet { print("will set to", newValue) }
        didSet  { print("did set from", oldValue) }
    }
}
var cnt = Counter()
cnt.value = 5
cnt.value = 9

Наблюдатели и вычисляемые свойства

Примечания:

  • Наблюдатели применяются к хранимым свойствам, включая свойства, значения которым задаются в расширениях.
  • Вычисляемые свойства не поддерживают наблюдатели — вместо этого помещайте логику в установку.
  • Наблюдатели не вызываются во время инициализации, пока хранилище не готово.

Практический шаблон

Объединяйте наблюдатели для нормализации входных данных и вычисляемое свойство для получения отображаемых данных.

struct Score {
    var raw: Int = 0 {
        didSet {
            if raw < 0 { raw = 0 }
            if raw > 100 { raw = 100 }
        }
    }
    var label: String {
        // computed: derive a label from current raw
        if raw >= 90 { return "A" }
        if raw >= 80 { return "B" }
        if raw >= 70 { return "C" }
        return "D"
    }
}
var s = Score()
s.raw = 120
print(s.raw, s.label)   // 100 A
s.raw = -5
print(s.raw, s.label)   // 0 D

Правило для наблюдателей

Быстрая проверка: что выполняется до и после изменения хранимого свойства?

Повторение

Повторение: используйте хранимые свойства для данных, вычисляемые — для производных значений с получением и установкой, а willSet/didSet — для реакции на изменения хранимых свойств.

Часто задаваемые вопросы

Урок «Хранимые и вычисляемые свойства, наблюдатели» бесплатный?

Да — полный текст урока «Хранимые и вычисляемые свойства, наблюдатели» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 3 уроков всего.

Чему я научусь в уроке «Хранимые и вычисляемые свойства, наблюдатели»?

Определяйте хранимые и вычисляемые свойства, создавайте свойства только для чтения и get/set, а также реагируйте на изменения с помощью наблюдателей willSet/didSet. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.

Сколько времени занимает урок «Хранимые и вычисляемые свойства, наблюдатели»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Структуры и классы, свойства и инициализаторы
  2. Хранимые и вычисляемые свойства, наблюдатели
  3. Инициализаторы и deinit (классы)
← Назад к Swift Academy