0Pricing
Swift Academy · Урок

Вычисляемые свойства в структурах

Научитесь получать значения с помощью вычисляемых свойств только для чтения и свойств с get/set.

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

Добро пожаловать

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

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

```swift struct Circle { var radius: Double var area: Double { .pi * radius * radius } var circumference: Double { 2 * .pi * radius } } var c = Circle(radius: 5) print(c.area) // 78.53... ```

Получение и установка

```swift struct Temperature { var celsius: Double var fahrenheit: Double { get { celsius * 9/5 + 32 } set { celsius = (newValue - 32) * 5/9 } } } var t = Temperature(celsius: 0) print(t.fahrenheit) // 32 t.fahrenheit = 212 print(t.celsius) // 100 ```

Сокращённая запись get — без ключевого слова get

Для свойств только для чтения оболочка `get { }` необязательна: ```swift var area: Double { .pi * radius * radius } // same as { get { ... } } ```

newValue в блоке установки

Внутри `set` поступающее значение по умолчанию называется `newValue`: ```swift set { celsius = (newValue - 32) * 5/9 } ``` Или назовите его явно: ```swift set(degF) { celsius = (degF - 32) * 5/9 } ```

Вычисляемые свойства не являются хранимыми

У вычисляемых свойств нет резервного хранилища — при каждом обращении выполняется код: ```swift struct Stats { var scores: [Int] var average: Double { guard !scores.isEmpty else { return 0 } return Double(scores.reduce(0,+)) / Double(scores.count) } } ```

Статические вычисляемые свойства

```swift struct Config { static var appName: String { Bundle.main.infoDictionary?["CFBundleName"] as? String ?? "App" } } print(Config.appName) ```

Вычисляемые свойства в протоколах

```swift protocol Greetable { var greeting: String { get } } struct Person: Greetable { var name: String var greeting: String { "Hello, \(name)!" } } ``` Протоколы могут требовать вычисляемые свойства — просто укажите `{ get }` или `{ get set }`.

Производительность вычисляемых и хранимых свойств

• Вычисляемые свойства: пересчитываются при каждом обращении — избегайте дорогостоящих вычислений в свойствах, к которым часто обращаются • Используйте `lazy var` для дорогостоящих значений, вычисляемых один раз: ```swift lazy var thumbnail: UIImage = generateThumbnail() ```

Тело-выражение и блок

В Swift 5.9+ вычисляемые свойства с одним выражением неявно возвращают результат: ```swift var fullName: String { "\(first) \(last)" } // equivalent to: var fullName: String { return "\(first) \(last)" } ```

Быстрая проверка

Как называется по умолчанию поступающее значение внутри блока `set` свойства?

Итоги

Основные выводы: • Вычисляемые свойства выполняют код при каждом обращении — у них нет резервного хранилища • Только для чтения: опустите `get`/`set` или используйте сокращённую запись `{ return ... }` • Для чтения и записи: укажите блоки `get` и `set(newValue)` • Они отлично подходят для производных значений, таких как `area`, `fullName` и преобразования единиц • Используйте `lazy` для дорогостоящих значений, вычисляемых один раз Далее: изменяющие методы.

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

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

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

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

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

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

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

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

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

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

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

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

  1. Инициализаторы со всеми свойствами и пользовательские инициализаторы
  2. Хранимые свойства и наблюдатели свойств
  3. Вычисляемые свойства в структурах
  4. Изменяющие методы и семантика копирования при записи
← Назад к Swift Academy