Swift Academy · Урок

Управление доступом (public/internal/fileprivate/private)

Управляйте видимостью API в разных файлах и модулях с помощью public, internal (по умолчанию), fileprivate и private. Узнайте, когда API следует открывать, а когда скрывать.

Урок 3 из 38 шагов

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

Обзор уровней доступа

Уровни доступа в Swift:

  • открытый: виден другим модулям
  • внутренний (по умолчанию): виден в том же модуле
  • доступ на уровне файла: доступен только в этом исходном файле
  • закрытый: доступен во внешней области (типе или расширении)

Внутренний доступ по умолчанию

Если не указывать модификатор, объявления получают внутренний уровень доступа и доступны в пределах того же модуля (пакета или цели приложения).

struct Greeter {            // internal by default
    func hello(_ name: String) -> String { "Hello, \\(name)" }
}
let g = Greeter()
print(g.hello("Ada"))

Открытая поверхность программного интерфейса

Помечайте программные интерфейсы как открытые, чтобы сделать их доступными другим модулям; вспомогательные элементы оставляйте внутренними, чтобы поверхность интерфейса оставалась небольшой.

public struct Math {
    public static func add(_ a: Int, _ b: Int) -> Int { a + b }
    // internal helper remains hidden outside the module
    static func double(_ x: Int) -> Int { x * 2 }
}
print(Math.add(1,2))

Область доступа файла

Доступ на уровне исходного файла ограничивает использование тем же исходным файлом. Это удобно для разделения вспомогательных элементов типа внутри одного файла.

// In FileA.swift
fileprivate func hiddenInFile() { print("Only in this file") }

struct A {
    func call() { hiddenInFile() } // OK: same file
}
A().call()

Закрытая область доступа

Закрытый уровень ограничивает доступ внешней областью (типом или расширением). Используйте его, чтобы надёжно защищать инварианты.

struct Box {
    private var value = 0     // visible only inside Box declaration
    mutating func set(_ v: Int) { value = v } // controlled write
    func get() -> Int { value }                // controlled read
}
var b = Box()
b.set(7)
print(b.get())
// b.value = 3   // error: 'value' is private

Советы по проектированию

Советы по проектированию:

  • По умолчанию выбирайте внутренний уровень, а как открытые предоставляйте только необходимые пользователям элементы.
  • Для вспомогательных элементов предпочитайте закрытый доступ или доступ на уровне исходного файла, чтобы интерфейсы оставались небольшими.
  • Уровень доступа члена не может быть шире уровня доступа его типа.

Доступ по умолчанию

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

Итоги

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

Можно начать бесплатно

Изучай Swift с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
122
Уроки
409

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

Урок «Управление доступом (public/internal/fileprivate/private)» бесплатный?

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

Чему я научусь в уроке «Управление доступом (public/internal/fileprivate/private)»?

Управляйте видимостью API в разных файлах и модулях с помощью public, internal (по умолчанию), fileprivate и private. Узнайте, когда API следует открывать, а когда скрывать. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

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

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

Сколько времени занимает урок «Управление доступом (public/internal/fileprivate/private)»?

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

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

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

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

  1. Memberwise init и изменяющие методы
  2. Наследование, переопределение и final
  3. Управление доступом (public/internal/fileprivate/private)
← Назад к Swift Academy