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中尚未实现隐私的类范围。