Swift中的计算属性,带有getter和setter

时间:2015-07-31 12:27:41

标签: swift

我正在使用快速语言,我对get / set属性有疑问。我认为当值由计算属性管理时,让内部变量公开是没有意义的。所以我认为将这个私有化为一个很好的做法。因为我还在学习,也许你们中的一些人可以给我其他想法让它公开。

class aGetSetClass{

    private var uppercaseString : String

    var upperString : String {
        get {
            return uppercaseString
        }
        set (value) {
            self.uppercaseString = value.uppercaseString
        }
    }

    init(){
        uppercaseString = "initialized".uppercaseString
    }

}


var instance3 = aGetSetClass()
println(instance3.upperString) // INITIALIZED
instance3.upperString = "new"
// println(instance3.uppercaseString) // private no access
println(instance3.upperString) // NEW
instance3.upperString = "new123new"
println(instance3.upperString) // NEW123NEW

1 个答案:

答案 0 :(得分:0)

我能想到公共访问权限的唯一方法是将其设置为transition-duration,然后使用private设置函数代替:

public

或者将其设为public private(set) uppercaseString: String public func setUpperString(string: String) { uppercaseString = string.uppercaseString } 并使用public将自己置于特定条件下(对于长字符串效率非常低):

didSet

这些实现使用直接公共访问,但您的版本在我看来更好/"更快捷的"方式。