【发布时间】:2017-08-21 19:42:06
【问题描述】:
在 C++ 中,您可以在类定义中指定“public:/private:”部分。有没有办法在 Swift 3 中做到这一点,还是我必须在我希望成为私有的每个对象的前面使用关键字“private”?
【问题讨论】:
-
你必须对每个对象都这样做。我认为没有其他方法。
标签: swift swift3 access-specifier
在 C++ 中,您可以在类定义中指定“public:/private:”部分。有没有办法在 Swift 3 中做到这一点,还是我必须在我希望成为私有的每个对象的前面使用关键字“private”?
【问题讨论】:
标签: 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 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 起可用