【问题标题】:Private section swift 3 in Struct / Class definition结构/类定义中的私有部分 swift 3
【发布时间】:2017-08-21 19:42:06
【问题描述】:

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

【问题讨论】:

  • 你必须对每个对象都这样做。我认为没有其他方法。

标签: swift swift3 access-specifier


【解决方案1】:

如果你有

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

但是,您只能在类定义中声明存储的属性,所以这不会工作...

private extension MyClass {
    let myName = "Fred"    
}

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

class MyClass {
    private let myName = "Fred"
}

【讨论】:

  • 请注意,私有扩展可以包含静态私有属性,可以在扩展主体中使用。
  • 这个fileprivate 关键字在swift 2.3 中可用吗?或者从 swift 3.0 开始。
  • fileprivate 自 Swift 3.0 起可用
猜你喜欢
  • 1970-01-01
  • 2017-07-20
  • 2019-02-13
  • 1970-01-01
  • 2014-06-14
  • 1970-01-01
  • 2019-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多