Рассмотрите следующий код:
x = 4
y = 5
z = (y + x)
puts z
Как Вы ожидали бы, вывод 9
. Если Вы представляете новую строку:
x = 4
y = 5
z = y
+ x
puts z
Тогда это производит 5
. Это имеет смысл, потому что он интерпретируется как два отдельных оператора (z = y
и +x
).
Однако я не понимаю, как это работает, когда у Вас есть новая строка в круглых скобках:
x = 4
y = 5
z = (y
+ x)
puts z
Вывод 4
. Почему?
(Оговорка: я совсем не программист Ruby. Это просто дикое предположение.)
С паренами вы получите z
, которому присваивается значение
y
+x
Что оценивается как значение последнего выполненного оператора.
Что ж, вам не понадобится экранирующий символ \
, если ваши строки заканчиваются оператором
a = 4
b = 5
z = a +
b
puts z
# => 9
Завершите строку символом \, чтобы продолжить выражение на следующей строке. Это дает правильный результат:
x = 4
y = 5
z = (y \
+ x)
puts z
outputs 9
Я не знаю, почему результат неожиданный без экранирования новой строки. Я просто научился никогда этого не делать.