在编写if语句时,我想做一些类似的事情,我的目标是首先判断协程,它将把返回的布尔标志设置为真或假,然后判断相同的IF条件和函数中的布尔标志是否也会得到期望值.
我的问题是,布尔值的if语句中的求值是在协程结束之前还是之后.
换句话说,我有这个功能
if(myBlockingCoroutineFunction() && !myCondition) return@launch
private suspend myBlockingCoroutineFunction(): Boolean {
//some logic here
//Updates the local myCondition
myCondition = false
return true
}
我的问题是,如果阻塞if语句中的第一个参数,这将与
if(myBlockingCoroutineFunction()) {
if(!myCondition)
return@launch
}
据我所知,在内部,if语句将比较参数的两个地址,以查看它们是否与继续执行的谓词匹配,但在这种情况下,我不确定是否会在协程执行时存储myCondition
值,然后将其与函数的结果进行比较,但没有注意到myCondition
已经更改