2017-05-24 3 views
0

Selon le doc d'Apple:Un type peut-il se conformer au protocole avec un niveau d'accès plus élevé que le type lui-même?

“A type can conform to a protocol with a lower access level than the type itself. ”

Cependant, la pièce de code suivante pourrait compiler sans erreur:

fileprivate class A : SomeProtocol { 
    func foo() {} 
} 

public protocol SomeProtocol { 
    func foo() 
} 

Quelqu'un pourrait-il expliquer cela?

+0

Etes-vous écrit dans les deux classes dans le même fichier? –

+0

Le fait que le code compile ne contredit pas la déclaration que vous avez citée - il dit "peut", pas "peut seulement". Apple tient simplement compte du fait que vous pouvez vous conformer à un protocole avec un niveau d'accès plus élevé (ce qui est parfaitement logique), et se concentre plutôt sur le cas le plus surprenant de se conformer à un protocole avec un niveau d'accès inférieur. – Hamish

+0

@phanisai Oui, ils sont dans le même fichier. –

Répondre

0

Bien que le document d'Apple ne le mentionne pas, un type peut effectivement se conformer à un protocole avec un niveau d'accès plus élevé que le type lui-même.