Я только заметил, что в Scala Boolean поддерживаются как &, так и &&. Есть ли разница между этими двумя операторами? Документы Scala используют одно и то же описание для обоих из них, поэтому я не был уверен.
Scala - Booleans - & vs &&, | vs ||
Ответ 1
& и | являются строгими, а && и || являются короткозамкнутыми:
false && (throw new Exception()) => false
false & (throw new Exception()) => ex
true || (throw new Exception()) => true
true | (throw new Exception()) => ex
В полной документации для & и | есть примечание, объясняющее это поведение:
Этот метод оценивает как a, так и b, даже если результат уже определяется после оценки a.