0Pricing
Swift Academy · Урок

Структуры и классы, свойства и инициализаторы

Сравните семантику значений и ссылок; используйте хранимые и вычисляемые свойства, наблюдатели свойств, инициализаторы и deinit классов.

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

Обзор

В Swift есть два основных составных типа: структура (значение) и класс (ссылка).

  • Структуры копируются при присваивании
  • Классы используют общие ссылки

Значения и ссылки

Структуры копируют значения; классы используют общие ссылки. Изменение b не влияет на a, но изменение d влияет на c.

struct Point { var x = 0, y = 0 }
class CPoint { var x = 0, y = 0 }

var a = Point(x: 1, y: 1)
var b = a          // copy
b.x = 9
print("struct a.x =", a.x, "b.x =", b.x) // 1, 9

let c = CPoint(); c.x = 1
let d = c          // same reference
d.x = 9
print("class c.x =", c.x, "d.x =", d.x) // 9, 9

Свойства

Хранимые свойства содержат данные; вычисляемые свойства получают значения при обращении.

struct Rectangle {
    var width: Double      // stored
    var height: Double     // stored
    var area: Double {     // computed
        return width * height
    }
}
let r = Rectangle(width: 3, height: 4)
print(r.area)  // 12

Наблюдатели

Используйте willSet/didSet, чтобы отслеживать изменения хранимых свойств.

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

Инициализаторы

Структуры получают поэлементный инициализатор. Классы определяют init (основной инициализатор) и могут добавлять вспомогательные инициализаторы.

struct User {
    var name: String
    // memberwise init is synthesized: User(name:)
}
class Person {
    var name: String
    init(name: String) {    // designated
        self.name = name
    }
    convenience init() {    // convenience
        self.init(name: "Guest")
    }
}
let u = User(name: "Ada")
let p = Person()
print(u.name, p.name)

Деинициализация

Только классы имеют деинициализатор, который вызывается при освобождении экземпляра (ARC).

class Temp {
    let id: Int
    init(id: Int) { self.id = id }
    deinit { print("Temp \\(id) deinit") }
}
do {
    let t = Temp(id: 1)
    print("using", t.id)
} // t goes out of scope and deinit may run

Вопрос о структурах и классах

Быстрая проверка: какое утверждение правильно описывает различие между структурами и классами?

Итоги

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

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

Урок «Структуры и классы, свойства и инициализаторы» бесплатный?

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

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

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

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

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

Сколько времени занимает урок «Структуры и классы, свойства и инициализаторы»?

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

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

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

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

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