柯特林语中的"&;&;"和"and"有什么不同?
在我的代码中,当First Condition为FALSE时,我注意到"and"之后的条件仍然被求值,但没有以"&;&;"大小写进行求值.为什么会这样呢?
柯特林语中的"&;&;"和"and"有什么不同?
在我的代码中,当First Condition为FALSE时,我注意到"and"之后的条件仍然被求值,但没有以"&;&;"大小写进行求值.为什么会这样呢?
您自己回答了这个问题--如果您使用and
,则计算整个表达式.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/and.html个
关于why发生的问题,这是因为and
不是运算符,而是Bool
类型的infix function.短路是一种编译器规则,适用于布尔运算符,而不适用于函数调用.
那么,为什么这个and
函数有用呢?
在某些情况下,调用右侧表达式可能会产生副作用,并且您希望无论左侧表达式如何,这些副作用都会发生.
if (!(saveToDatabase() and writeToNoficationQueue())) {
print("At least one thing went wrong there. Check the logs to find out.")
}