Разница между «&&» и «и» в котлине

В чем разница между «&&» и «и» в котлине?

в моем коде, когда первое условие ложно, я заметил, что условие после «и» все еще оценивается, но не оценивается в случае «&&». почему это?

10
0
968
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы сами ответили на вопрос - если вы используете 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.")
}

Я не очень хорошо знаком с Kotlin, но мне интересно, почему он реализован как встроенный, а не как функция, которая просто возвращает a && b.

lesderid 01.08.2023 22:44

@lesderid Поскольку на самом деле это побитовый оператор И, дополнительную информацию см. здесь: en.wikipedia.org/wiki/Bitwise_operation

Tiebe Groosman 01.08.2023 23:20

Другие вопросы по теме