Struct / Class 定义中的私有部分 swift 3

Private section swift 3 in Struct / Class definition

在 C++ 中,您可以在 class 定义中指定 "public: / private:" 部分。在 Swift 3 中有没有办法做到这一点,或者我是否必须在每个我希望私有的对象前面使用关键字 "private"?

如果你有

class MyClass {

}

您可以声明作用域扩展,例如

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
     }
}

但是,您只能在 class 定义中声明存储的属性,因此 不会 工作…

private extension MyClass {
    let myName = "Fred"    
}

在这种情况下,您需要将 scope 关键字应用于 属性 本身……

class MyClass {
    private let myName = "Fred"
}