18/305 sprint 2 Что я изучила сегодня: Уровни доступа и инициализаторы в Swift 🎀Уровни доступа

В Swift для свойств и функций, определённых в теле структуры, можно задавать различные уровни доступа:

public: Свойства или функции видны всегда и везде.

internal: Свойства или функции видны только внутри данного модуля компиляции. Это значение по умолчанию для свойств и функций внутри структуры, поэтому явное указание этого уровня считается избыточным.

private: Свойства или функции доступны только внутри тела структуры.

fileprivate: Свойства или функции доступны только внутри данного Swift-файла.

Эти уровни доступа помогают управлять видимостью и защищать данные, что делает код более безопасным и организованным.

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

Инициализатор в Swift — это специальная функция с названием init, которая:

Принимает 0 или более параметров.

Присваивает всем неопциональным свойствам структуры начальное значение.

Инициализатор называют «псевдо-функцией», так как при вызове не используется ключевое слово func. Вместо этого можно использовать имя типа. Например:

var adminUser = User(id: 1, login: "admin@service.com", name: "Admin")

По умолчанию Swift генерирует для каждой структуры дефолтный инициализатор, который принимает столько же аргументов, сколько у свойств у структуры. Если мы определяем свой собственный инициализатор, то дефолтный больше не создаётся.

Вот пример структуры User с кастомным инициализатором:

struct User { let id: Int let login: String var name: String

init(id: Int, login: String) { self.id = id self.login = login self.name = login.capitalized } }

Создавая экземпляр структуры, мы можем сделать это следующим образом:

var adminUser = User(id: 1, login: "admin") // Создаст пользователя с id = 1, login = "admin" и name = "Admin"