Подтвердить что ты не робот

Scala - Booleans - & vs &&, | vs ||

Я только заметил, что в Scala Boolean поддерживаются как &, так и &&. Есть ли разница между этими двумя операторами? Документы Scala используют одно и то же описание для обоих из них, поэтому я не был уверен.

4b9b3361

Ответ 1

& и | являются строгими, а && и || являются короткозамкнутыми:

false && (throw new Exception()) => false
false & (throw new Exception()) => ex

true || (throw new Exception()) => true
true | (throw new Exception()) => ex

В полной документации для & и | есть примечание, объясняющее это поведение:

Этот метод оценивает как a, так и b, даже если результат уже определяется после оценки a.