可以将`public private(set)var numberOfEdits = 0`写成`public(get)private(set)var numberOfEdits = 0`?

时间:2016-02-22 03:22:44

标签: swift get set getter access-control

我是Swift的新手,并试图学习访问控制的概念。我在“swift编程语言2.1”中看到了这段代码。我理解代码"public private(set) var numberOfEdits = 0"意味着对于变量numberOfEdits,它有一个公共getter和一个私有setter。

我的问题是,可以public private(set) var numberOfEdits = 0写成public(get) private(set) var numberOfEdits = 0以清楚地表明numberOfEdits有公共吸气剂吗?

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

1 个答案:

答案 0 :(得分:2)

不,getter始终具有非限定访问控制标签的访问级别。您可以使用private(set)internal(set)覆盖设置者级别低于的getter级别。