Почему 'p' печатает значение последней переменной? - PullRequest
0 голосов
/ 17 мая 2018

У меня есть этот код:

a=10
b=20
p (a && b)

Приведенный выше оператор p выводит значение последней переменной.Почему не выводятся значения обеих переменных?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

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 и (.

нет пробела.
0 голосов
/ 17 мая 2018

a верно, поэтому a && b возвращает b.p принимает этот аргумент и печатает его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...