Logical

Логические операторы, чаще называют булевыми операторами.

Термин «булевый» происходит от книги «Математический анализ логики», написанной Джорджем Булем в 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), где низкий приоритет является преднамеренной особенностью, позволяющей избежать использования скобок.