2017-03-28 2 views
0

En C++, vous pouvez spécifier des sections "public:/private:" dans vos définitions de classe. Existe-t-il un moyen de le faire dans Swift 3 ou dois-je utiliser le mot-clé "private" devant chaque objet que je souhaite être privé?Section privée swift 3 dans la définition Struct/Class

+0

Vous devez le faire sur tous les objets. Je ne pense pas qu'il y ait un autre moyen. – gasho

Répondre

2

Si vous avez

class MyClass { 

} 

Vous pouvez déclarer les extensions scope, par exemple

fileprivate extension MyClass { 
    var someThing: String { // This computed property is fileprivate 
     return "ABC" 
    } 

    func doSomething() { // This func is fileprivate 
    } 
} 

public extension MyClass { 
    var someOtherThing: String { // This computed property is public 
     return "123" 
    } 

    func doSomethingElse() {  // This func is public 
    } 
} 

Cependant, vous ne pouvez déclarer des propriétés stockées dans votre définition de la classe, donc ce ne travail ...

private extension MyClass { 
    let myName = "Fred"  
} 

Dans ce cas, vous devez appliquer le mot-clé portée à la propriété elle-même ...

class MyClass { 
    private let myName = "Fred" 
} 
+0

Juste une note, les extensions privées peuvent contenir des propriétés privées statiques qui peuvent être utilisées dans le corps de l'extension. – JAL

+0

Ce mot-clé 'fileprivate' est disponible dans swift 2.3? Ou commence à partir de 3.0 rapide. – Exploring

+0

'fileprivate' est disponible depuis Swift 3.0 –