计算属性中的基础变量| Swift

计算属性中的基础变量| Swift,swift,Swift,我的问题解释如下。 TLDR:我的代码要求我使用第三个变量来表示计算属性的值。我想知道是否有一种方法可以只使用两个变量 因此,我有一个名为firstNumber的计算属性,它是一个布尔值。 每次更改它的值时,我都要更改另一个变量,isDecimal,它独立于firstNumber,并且有许多不同的东西可以更改它 为此,当firstNumber设置为false时,我还将isDecimal设置为false。唯一的问题是我还需要firstnumbers布尔值,因此我创建了一个名为firstnumber

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

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

为此,当
firstNumber
设置为false时,我还将
isDecimal
设置为false。唯一的问题是我还需要
firstnumbers
布尔值,因此我创建了一个名为
firstnumberrapi
的底层布尔值

我不认为这是做我想做的事情的最好方式。 我想知道是否有人可以建议在更改
firstNumber
时设置
isDecimal
,而不创建第三个
firstnumberrapi
变量

var isDecimal = false
var firstNumberAPI = false

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

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

var isDecimal = false

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

有关
didSet

的详细信息,请参阅本书的一节。无需使用
firstnumberrapi
变量。将
firstNumber
更改为:

var isDecimal = false

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

有关
didSet

的详细信息,请参阅本书的一节,谢谢您的帮助!你能解释一下什么是“迪塞特”吗?我以前从未见过这种语法。@LeoDabus当然,因为那是不对的。您需要
var firstNumber:Bool=true{…}
。不,您说的是
firstNumber=false
。如果在
:Bool
@LeoDabus之后简单地添加
=true
,那么答案中的代码就可以按原样编译,而不需要类,这就很困难了。你发表了一堆我回复的评论。然后你删除了你所有的评论,所以我删除了我的。现在,您发布了一组具有相同注释的新内容。请不要再让我重复了。谢谢如果将我的答案中的代码按原样放在一个类中,那么只要在
init
方法中设置
firstNumber
,或者添加
=true
,代码就可以编译。同样,就像我第一次说的,这些都与问题无关。@LeoDabus做你想做的事。没有什么可编辑的。信不信由你,人们足够聪明,能够读懂答案并明白该怎么做。这不是复制粘贴。这是为了回答所问的问题。我已经在评论中提到了你的问题。谢谢你的帮助!你能解释一下什么是“迪塞特”吗?我以前从未见过这种语法。@LeoDabus当然,因为那是不对的。您需要
var firstNumber:Bool=true{…}
。不,您说的是
firstNumber=false
。如果在
:Bool
@LeoDabus之后简单地添加
=true
,那么答案中的代码就可以按原样编译,而不需要类,这就很困难了。你发表了一堆我回复的评论。然后你删除了你所有的评论,所以我删除了我的。现在,您发布了一组具有相同注释的新内容。请不要再让我重复了。谢谢如果将我的答案中的代码按原样放在一个类中,那么只要在
init
方法中设置
firstNumber
,或者添加
=true
,代码就可以编译。同样,就像我第一次说的,这些都与问题无关。@LeoDabus做你想做的事。没有什么可编辑的。信不信由你,人们足够聪明,能够读懂答案并明白该怎么做。这不是复制粘贴。这是为了回答所问的问题。我已经在评论中提到了你的问题。