Логические операторы, чаще называют булевыми операторами.
Термин «булевый» происходит от книги «Математический анализ логики», написанной Джорджем Булем в 1847 году. Булева логика сыграла фундаментальную роль в развитии компьютеров и программирования, поскольку по своей сути компьютеры обрабатывают информацию о наличии или отсутствии тока: включен или выключен (истина или ложь).
&&- оператор И||- оператор ИЛИ!- оператор НЕ
Так же, в Ruby присутствуют операторы and и or, которые являются почти полными алиасами операторов && и ||, за исключением приоритета их выполнения.
Оператор && имеет высокий приоритет, выше, чем оператор присваивания =. А оператор and имеет очень низкий приоритет, ниже, чем оператор присваивания =. То же самое касается пары || и or.
result = true && false
puts result
# => false
result = true and false
puts result
# => true
Как видно из примера выше, результат выполнения различен. Это связано с тем, что оператор and имеет низкий приоритет, операция присваивания = вычисляется первой. Интерпретатор читает это как (total = true) and false.
Для булевой логики обычно используется && и ||. Их приоритет соответствует большинству других языков программирования и приводит к меньшему количеству неожиданностей. Это рекомендуемая практика в большинстве руководств по стилю Ruby.
and и or используется в основном для управления потоком выполнения (например, do_something() or fail), где низкий приоритет является преднамеренной особенностью, позволяющей избежать использования скобок.