三元运算符中的“+=”运算符是什么意思?

Del*_*ark 6 java

我在 androidx.lifecycle 包中发现了一个代码片段,我想知道这是什么意思。

LiveData.this.mActiveCount += mActive ? 1 : -1;
Run Code Online (Sandbox Code Playgroud)

其中 mActiveCount 是一个整数,而 mActive 是一个布尔值。

但是,当我在写这个问题时,我想我是带着答案而来的,所以如果我没有弄错的话,“+=”运算符的使用就像我们通常使用的“=”运算符一样。

这意味着代码执行的顺序如下:

mActive ? 1 : -1;部分首先执行。

一旦解决了这个问题,就LiveData.this.mActiveCount += mActive执行。所以我真正的问题是:

这是此代码的正确等效项吗?:

    int intToAdd = mActive ? 1 : -1;
    activeCount += intToAdd;
Run Code Online (Sandbox Code Playgroud)

dqu*_*mar 8

运算符+=与三元运算符无关。您正在使用三元运算符检查条件并将其变量增加或减少 1。

a = a + b is equivalent to a += b, assuming we have declared a and b previously.
Run Code Online (Sandbox Code Playgroud)

所以,你的代码LiveData.this.mActiveCount += mActive ? 1 : -1;相当于:-

 if(mActive){
    LiveData.this.mActiveCount += 1;
 }
 else{
   LiveData.this.mActiveCount -= 1;
 }
Run Code Online (Sandbox Code Playgroud)

你下面的逻辑也是正确的:-

 int intToAdd = mActive ? 1 : -1;
 activeCount += intToAdd;
Run Code Online (Sandbox Code Playgroud)