Оператор Boolean AND && возвращает свой второй операнд, если сначала не false. 0 и 1 являются true в булевых выражениях в Ruby. Только nil и false являются ложными в булевых выражениях.
0 и 1 не представляют значения истинности в Ruby. В рубине все, что не является nil или false, истинно. Если вы добавите к этому, что:
The & and && операторы оценивают свой первый операнд. Если false, выражение возвращает false; в противном случае выражение возвращает значение второго операнда.
Вы получаете, что вы оцениваете true && true, а затем возвращается результат второго операнда. Если вы написали 3 && 4, вы получили бы 4!
Ответ 3
В дополнение к отличным ответам здесь:
Вероятно, вы путаете логические логические и побитовые.