Свойства и сабскрипты
Используйте ленивые хранимые свойства, вычисляемые свойства get/set, наблюдатели свойств и сабскрипты для пользовательской индексации.
«Свойства и сабскрипты» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.
Введение
В этом уроке рассматриваются расширенные свойства: отложенные, вычисляемые с get/set, свойства с наблюдателями, а также пользовательские индекаторы.
Отложенное свойство
Отложенные свойства создаются только при первом обращении. Они полезны для ресурсоёмких операций.
struct DataLoader {
lazy var data: [Int] = {
print("Loading...")
return [1,2,3]
}()
}
var loader = DataLoader()
print("before access")
print(loader.data)Вычисляемые свойства с получением и установкой
Вычисляемые свойства используют блоки получения и установки, чтобы вычислять или обновлять значения.
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]) // 3Вопрос об отложенных свойствах
Быстрая проверка: что делает ключевое слово для отложенной инициализации?
Итоги
Итоги: используйте отложенные свойства для отложенной инициализации, получение/установку для вычисляемых свойств, willSet/didSet для наблюдения и индексаторы для пользовательского доступа.
Часто задаваемые вопросы
Урок «Свойства и сабскрипты» бесплатный?
Да — полный текст урока «Свойства и сабскрипты» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.
Чему я научусь в уроке «Свойства и сабскрипты»?
Используйте ленивые хранимые свойства, вычисляемые свойства get/set, наблюдатели свойств и сабскрипты для пользовательской индексации. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Свойства и сабскрипты»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Свойства и сабскрипты
- lazy и наблюдатели свойств
- Вычисляемые свойства с get/set
- Сабскрипты для пользовательской индексации