Прежде всего, and
и or
имеют очень низкий приоритет и предназначены для потока управления, например.
do_this or exit
(при условии, что do_this
вернет правдивый результат в случае успеха)
Для логических операций вместо этого следует использовать &&
и ||
.
Далее, в Ruby есть два ложных значения: false
и nil
. Любое другое значение считается правдивым, включая 0
.
Возможно, вы ищете:
true && false
#=> false
true && false && true
#=> false
true && true && true
#=> true
Если вы работаете с 1
и 0
, вам могут пригодиться битовые операции: (см. Integer#&)
1 & 0
#=> 0
1 & 0 & 1
#=> 0
1 & 1 & 1
#=> 1
Числа
1
и0
не являются логическими значениями в Ruby. Они обаtrueish
находятся в Ruby, поэтому Ruby просто возвращает последнее значение из каждого оператора. Если вместо этого вы используетеtrue
иfalse
, обе версии вернутfalse
. Кстати. в логических выражениях использование&&
вместоand
было бы более идиоматично.