“public private(set)”访问修饰符如何工作?

时间:2016-05-16 23:35:02

标签: swift

所以我在这里浏览Apple文档 - Apple Docs

然后我遇到了这个..

public struct TrackedString {
    public private(set) var numberOfEdits = 0
    public var value: String = "" {
        didSet {
            numberOfEdits += 1
        }
    }
    public init() {}
}

如何正确添加public private(set)?如果你能展示一些更加容易的例子/解释,那就太棒了!

2 个答案:

答案 0 :(得分:8)

这只是意味着numberOfEdits的getter是公共的,但setter是私有的。没有更多的东西了。

这种情况下的原因是您可以公开阅读numberOfEdits,但您只能通过更改value进行设置。如果它完全public,那么任何人都可以设置它,但如果它只是可设置的,则didSet中的value无法修改它。 private(set)是两者之间的妥协。

答案 1 :(得分:4)

可以读取此属性,但不能从外部

进行设置

参考:Click the link to know more