所以我在这里浏览Apple文档 - Apple Docs
然后我遇到了这个..
public struct TrackedString {
public private(set) var numberOfEdits = 0
public var value: String = "" {
didSet {
numberOfEdits += 1
}
}
public init() {}
}
Run Code Online (Sandbox Code Playgroud)
如何public private(set)正确添加工作?如果你能展示一些比较神奇的更简单的例子/解释!
Rob*_*ier 12
这只是意味着getter numberOfEdits是公共的,但是setter是私有的.没有更多的东西.
在这种情况下的原因是您可以numberOfEdits公开阅读,但您只能通过更改来设置它value.如果它是完全的public,那么任何人都可以设置它,但如果它只是可设置的,则didSetin value无法修改它.private(set)是这两者之间的妥协.
private (set) var限制对内部范围的写访问,但仍然允许外部读访问。var 也可以在内部读取。
例如,private var比较private (set) var:
private
class NameNotAccessible {
private var name: String?
}
var person = NameNotAccessible()
print(person.name) // ERROR: external access forbidden
Run Code Online (Sandbox Code Playgroud)
修改为private (set) var
class NameAccessible {
private (set) var name: String? // externally readable, internally writable
}
var person2 = NameAccessible()
print(person2.name) // external read OK
person2.name = "Jacob" // ERROR: external write forbidden
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2259 次 |
| 最近记录: |