Swift языка программирования это сказать о контроле доступа для расширения:контроля доступа для Swift Extensions
Вы можете расширить класс, структуру или перечислений в любом доступе контекста, в котором класс, структура или перечисление доступно. Любые члены типа, добавленные в расширение, имеют одинаковый доступ по умолчанию уровень как члены типа, объявленные в первоначальном типе, который расширяется. Если вы распространяете общедоступный или внутренний тип, любые добавляемые вами новые члены типа будут иметь внутренний уровень доступа по умолчанию. Если вы добавите частный тип , любые добавляемые вами новые члены типа будут иметь уровень доступа по умолчанию частный.
В качестве альтернативы вы можете пометить расширение с явным уровнем доступа модификатором (например, частным расширением), чтобы установить новый уровень доступа по умолчанию для для всех членов, определенных в расширении. Это новое значение по умолчанию все еще может быть переопределено внутри расширения для отдельного типа .
Я не совсем понимаю вышеуказанное утверждение. Он говорит следующее:
public struct Test { }
extension Test {
// 1. This will be default to internal because Test is public?
var prop: String { return "" }
}
public extension Test {
// 2. This will have access level of public because extension is marked public?
var prop2: String { return "" }
extension Test {
// 3. Is this the same as the above public extension example?
public var prop2: String { return "" }
}
Спасибо @mokagio, исправленный пример. – Boon
Я полагаю, что мое предположение (2) верно? Поскольку, когда public применяется к классу, свойство внутри него по-прежнему дефолтируется по умолчанию. – Boon
Да, ваше предположение верно. Вы можете проверить это, создав новый проект, добавив к нему фреймворк и воспроизведя свой сценарий с помощью структуры, содержащей структуру. :) – mokagio