Подтвердить что ты не робот

Ruby - новые строки и операторы

Рассмотрим следующий код:

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. Почему?

4b9b3361

Ответ 1

(Отказ от ответственности: я вообще не программист Ruby. Это просто дикое предположение.)

С помощью parens вы получаете z, которому присваивается значение

y
+x

Которая оценивает значение последнего выполненного оператора.

Ответ 2

Завершите строку с помощью \, чтобы продолжить выражение на следующей строке. Это дает правильный вывод:

x = 4
y = 5
z = (y \
  + x)
puts z

выходы 9

Я не знаю, почему результат неожиданен, не выходя из новой строки. Я просто не научился этого делать.

Ответ 3

Ну, вам не понадобится экранирующий символ \, если ваши строки заканчиваются оператором

a = 4
b = 5
z = a +
    b

puts z 
# => 9