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

11
задан mopoke 11 February 2010 в 01:25
поделиться

3 ответа

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

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

y
+x

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

12
ответ дан 3 December 2019 в 06:21
поделиться

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

a = 4
b = 5
z = a +
    b

puts z 
# => 9
3
ответ дан 3 December 2019 в 06:21
поделиться

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

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

outputs 9

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

4
ответ дан 3 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: