p (a && b)
не означает "print a and b" .
&&
является оператором. a && b
(почти) эквивалентно:
unless a
a
else
b
end
Возвращает a
, если a
равно nil
или false
:
nil && 123 #=> nil
false && 123 #=> false
и возвращается b
в противном случае:
:foo && 123 #=> 123
:bar && 123 #=> 123
Ваш код оценивается как:
a = 10
b = 20
p (a && b)
p (10 && 20)
p (20)
p 20
Чтобы напечатать два значения через p
, вы должны передать их как отдельные аргументы:
p a, b
# or
p(a, b)
Скобки необязательны, но если вы их используете, между p
и (
.
нет пробела.