Swift “怎么做?”;公私合营(set)“;访问修改器工作吗?
所以我在这里浏览苹果的文档- 然后我遇到了这个Swift “怎么做?”;公私合营(set)“;访问修改器工作吗?,swift,Swift,所以我在这里浏览苹果的文档- 然后我遇到了这个 public struct TrackedString { public private(set) var numberOfEdits = 0 public var value: String = "" { didSet { numberOfEdits += 1 } } public init() {} } 添加public-private(set)究竟是如何
public struct TrackedString {
public private(set) var numberOfEdits = 0
public var value: String = "" {
didSet {
numberOfEdits += 1
}
}
public init() {}
}
添加
public-private(set)
究竟是如何工作的?如果你能展示一些更简单的例子/解释,那将是惊人的 这只意味着numberOfEdits
的getter是公共的,而setter是私有的。没什么了
这种情况下的原因是,您可以公开读取
numberOfEdits
,但只能通过更改值来设置它。如果它是完全公开的,那么任何人都可以设置它,但是如果它只是可设置的,那么值中的didSet
就不能修改它private(set)
是这两者之间的折衷。此属性可以读取,但不能从外部设置
Ref:解释是正确的,但提到的变量是错误的。numberOfEdits属性只能在类内设置(即,在其他任何地方都是只读的)。value属性仍然到处可读写。谢谢@conarch。已修复。@conarch“numberOfEdits属性只能在类中设置”,而不能在类中设置。档案。Swift中尚未实现隐私的类范围。