Я только заметил, что в 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.