结构/类定义中的专用部分swift 3 在C++中,可以在类定义中指定“公共:/私有:”节。在Swift 3中有没有办法做到这一点,或者我是否必须在每个我想成为私人的对象前面使用关键字“私人”?

结构/类定义中的专用部分swift 3 在C++中,可以在类定义中指定“公共:/私有:”节。在Swift 3中有没有办法做到这一点,或者我是否必须在每个我想成为私人的对象前面使用关键字“私人”?,swift,swift3,access-specifier,Swift,Swift3,Access Specifier,如果有 class MyClass { } 您可以声明作用域扩展,例如 fileprivate extension MyClass { var someThing: String { // This computed property is fileprivate return "ABC" } func doSomething() { // This func is fileprivate } } public exten

如果有

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
     }
}
但是,您只能在类定义中声明存储的属性,因此这不起作用

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

class MyClass {
    private let myName = "Fred"
}
如果你有

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
     }
}
但是,您只能在类定义中声明存储的属性,因此这不起作用

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

class MyClass {
    private let myName = "Fred"
}

你必须在每个物体上都这样做。我不认为有其他方法。你必须在每一个物体上都这样做。我不认为还有其他方法。请注意,私有扩展可以包含静态私有属性,可以在扩展的主体中使用。这个
fileprivate
关键字在swift 2.3中可用?或者从swift 3.0开始。
fileprivate
可用,因为swift 3.0只需一个注释,私有扩展可以包含静态私有属性,可以在扩展的主体中使用。此
fileprivate
关键字在swift 2.3中可用?或从swift 3.0开始。
fileprivate
从swift 3.0开始提供