13/305 sprint 2 Всем привет 😉
Сегодня я начала изучать структуры.
В языке Swift структуры являются ключевым элементом, позволяющим объединять различные данные и создавать универсальные шаблоны для объектов.
🎀 Пример структуры
«Пользователь приложения»:
struct User { let id: String let login: String let name: String }
Эта структура содержит свойства: id, login и name, которые имеют тип данных String. На основе этого шаблона мы можем создавать объекты пользователей с одинаковым набором свойств, но с разными значениями:
let user1 = User(id: “1”, login: “user1”, name: “Ekaterina”) let user2 = User(id: “2”, login: “user2”, name: “Anna”)
🎀 Хранимые свойства
Хранимые свойства (Stored Properties) позволяют нам хранить данные в памяти. Например, создадим структуру Person:
struct Person { var name: String var age: Int }
При создании экземпляра структуры мы можем получить доступ к свойствам напрямую:
var person = Person(name: “John”, age: 30) print(person.name) // “John” print(person.age) // 30
// Изменение свойств person.name = “Jane” person.age = 25
🎀 Ленивые свойства
Иногда имеет смысл вычислять значение свойства только при его использовании. Для этого служат ленивые свойства (Lazy Stored Properties). Например, если у нас есть свойство fullName, его можно вычислить только при первом обращении:
struct Person { var name: String var age: Int
lazy var fullName: String = “(name) (age)” }
var person = Person(name: “John”, age: 30) print(person.fullName) // “John 30”
Ленивое свойство будет инициализировано только при первом доступе, что позволяет экономить ресурсы. Если требуется более сложное вычисление, можно использовать специальный синтаксис:
struct Person { var name: String var age: Int lazy var fullName: String = { return “(self.name) (self.age)” }() }
В этом случае, когда мы обращаемся к fullName, выполняется блок кода, который возвращает строку с именем и возрастом. После первого обращения значение сохраняется, и при следующих обращениях мы получаем уже вычисленное значение.