【问题标题】:What does it mean that the capability for observing properties is available to variables?变量可以使用观察属性的能力是什么意思?
【发布时间】:2014-06-14 19:41:50
【问题描述】:

在 Swift 文档(Properties-Property Observers / Global and Local Variables)中有说明

上述用于计算和观察属性的功能也可用于全局变量和局部变量。

我了解如何在类中使用willSetdidSet,但以上关于全局和/或局部变量的含义是什么?


更新:这意味着您可以这样做(如果您记得需要显式类型):

var someGlobalString: String = "abc" {
    willSet {
        println("someGlobalString changing from \(someGlobalString) to \(newValue)")
    }
    didSet {
        println("someGlobalString changed from \(oldValue) to \(someGlobalString)")
    }
}
someGlobalString = "qrs"

并在控制台中查看:

someGlobalString changing from abc to qrs
someGlobalString changed from abc to qrs

我觉得这很棒。

【问题讨论】:

    标签: swift


    【解决方案1】:

    这意味着您也可以将观察者用于本地/全局变量

    func test() {
        var totalSteps: Int = 0 {
            willSet(newTotalSteps) {
                println("About to set totalSteps to \(newTotalSteps)")
            }
            didSet {
                if totalSteps > oldValue  {
                    println("Added \(totalSteps - oldValue) steps")
                }
            }
            }
    
            totalSteps += 1
        }
    test()
    

    【讨论】:

    • 谢谢,我没有在我的变量上使用显式类型,也没有因为错过我失败的原因而出现实时问题(当然,在付出很多努力之前,我求助于 stackoverflow: -))。不得不说我觉得这是一个不错的功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多