Назад к вопросам
Junior — Middle
76
Чем отличаются модификаторы доступа fileprivate и private в языке Swift?
Компании, где спрашивали
AppMaster
Ответ от нейросети
sobes.tech AI
В Swift модификаторы доступа private и fileprivate ограничивают видимость кода, но отличаются областью действия:
-
privateограничивает доступ к элементу только внутри того же объявления (например, класса, структуры или расширения). Даже в том же файле, но вне этого объявления, доступ запрещён. -
fileprivateразрешает доступ ко всему элементу в пределах одного файла. То есть все типы и функции в одном файле могут видетьfileprivateэлементы.
Пример:
class MyClass {
private var privateValue = 1
fileprivate var fileprivateValue = 2
}
extension MyClass {
func test() {
print(privateValue) // Доступно, так как в том же объявлении
print(fileprivateValue) // Доступно
}
}
func outside() {
let obj = MyClass()
// print(obj.privateValue) // Ошибка: private вне класса
print(obj.fileprivateValue) // Доступно, так как в том же файле
}
Таким образом, private — самый строгий уровень, ограниченный объявлением, а fileprivate расширяет доступность на весь файл.