langage de programmation Swift a ceci à dire au sujet du contrôle d'accès pour l'extension:de contrôle d'accès pour les extensions Swift
Vous pouvez étendre une classe, la structure ou l'énumération dans un contexte d'accès dans lequel la classe, la structure, ou l'énumération est disponible. Tous les membres de type ajoutés dans une extension ont le même niveau d'accès par défaut que les membres de type déclarés dans le type d'origine en cours d'extension. Si vous étendez un type public ou interne, tous les nouveaux membres de type que vous ajoutez auront un niveau d'accès par défaut interne. Si vous étendez un type privé , tous les nouveaux membres de type que vous ajoutez auront un niveau d'accès par défaut de privé. Vous pouvez également marquer une extension avec un modificateur de niveau d'accès explicite (par exemple, extension privée) pour définir un nouveau niveau d'accès par défaut pour tous les membres définis dans l'extension. Cette nouvelle valeur par défaut peut toujours être remplacée dans l'extension pour les membres individuels de type .
Je ne comprends pas complètement l'énoncé ci-dessus. Est-ce qu'il dit ce qui suit:
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 "" }
}
Merci @mokagio, exemple corrigé. – Boon
Mon hypothèse pour (2) est-elle correcte? Parce que lorsque public est appliqué à la classe, la propriété à l'intérieur est toujours par défaut à interne. – Boon
Oui, votre hypothèse est correcte. Vous pouvez le vérifier en créant un nouveau projet, en y ajoutant un cadre et en reproduisant votre scénario avec une structure contenant le framework. :) – mokagio