我在 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)
运算符+=与三元运算符无关。您正在使用三元运算符检查条件并将其变量增加或减少 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)
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |