0Pricing
Swift Academy · Урок

Вычисляемые свойства с get/set

Создавайте вычисляемые свойства (только для чтения и для чтения/записи) с помощью get/set, обеспечивайте инварианты в сеттерах и используйте управление доступом, например private(set).

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

Обзор

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

Вычисляемое свойство только для чтения

Вычисляемое свойство только для чтения не содержит 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

Чтение и запись: получение и установка

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

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.

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; вместо этого помещайте логику в установку.
  • Геттеры должны выполняться быстро; затратные операции следует размещать в методах.

Определение вычисляемого свойства

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

Повторение

Повторение: создавайте вычисляемые свойства только для чтения и для чтения и записи, проверяйте данные при установке и используйте private(set), чтобы управлять тем, кто может изменять данные.

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

Урок «Вычисляемые свойства с get/set» бесплатный?

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

Чему я научусь в уроке «Вычисляемые свойства с get/set»?

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

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

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

Сколько времени занимает урок «Вычисляемые свойства с get/set»?

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

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

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

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

  1. Свойства и сабскрипты
  2. lazy и наблюдатели свойств
  3. Вычисляемые свойства с get/set
  4. Сабскрипты для пользовательской индексации
← Назад к Swift Academy