计算属性中的底层变量|迅速

时间:2017-04-25 20:47:25

标签: swift

我的问题解释如下。 TLDR:我的代码要求我使用第三个变量来表示计算属性的值。我想知道是否有办法只用两个变量来做。

所以我有一个名为firstNumber的计算属性,它是一个布尔值。 每次更改其值时,我都想更改另一个变量isDecimal,该变量独立于firstNumber并且有许多不同的变量可以改变它。

为此,当firstNumber设置为false时,我还将isDecimal设置为false。唯一的问题是我还需要firstNumber布尔值来获取值,所以我创建了一个名为firstNumberAPI的基础布尔值。

我不认为这是我尝试做的最佳方式。 我想知道是否有人可以在isDecimal更改时设置firstNumber的方法,而不会创建第三个firstNumberAPI变量。

var isDecimal = false
var firstNumberAPI = false

var firstNumber: Bool{
    get{
        return firstNumberAPI
    }
    set{
        firstNumberAPI = newValue
        if newValue==true{
            isDecimal = false
        }
        else{
            isDecimal = true
        }
    }
}

1 个答案:

答案 0 :(得分:3)

不需要firstNumberAPI变量。将firstNumber更改为:

var isDecimal = false

var firstNumber: Bool {
    didSet {
        isDecimal = !firstNumber
    }
}

有关didSet的详细信息,请参阅Property Observers手册的The Swift Programming Language部分。