Вычисляемые свойства с 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) // 0private(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 — локальная установка не требуется.
Все уроки этого курса
- Свойства и сабскрипты
- lazy и наблюдатели свойств
- Вычисляемые свойства с get/set
- Сабскрипты для пользовательской индексации