AT *_*ani 16 android logical-operators kotlin logical-and
kotlin中“&&”和“and”有什么区别?
在我的代码中,当第一个条件为假时,我注意到“and”之后的条件仍然被评估,但在“&&”情况下不被评估。这是为什么?
And*_*erd 26
您自己回答了这个问题 - 如果您使用,and那么您将评估整个表达式。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/and.html
在回答为什么会发生这种情况的问题时,这是因为它and不是一个运算符,而是类型上的一个中缀函数Bool。短路是适用于布尔运算符而不是函数调用的编译器规则。
那么这个and功能为什么有用呢?在某些情况下,调用右侧表达式可能会产生副作用,并且您希望无论左侧表达式如何,这些副作用都会发生。
if (!(saveToDatabase() and writeToNoficationQueue())) {
print("At least one thing went wrong there. Check the logs to find out.")
}
Run Code Online (Sandbox Code Playgroud)