0Pricing
Swift Academy · Урок

Свойства и сабскрипты

Используйте ленивые хранимые свойства, вычисляемые свойства 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 — локальная установка не требуется.

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

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