Оператор интерполяции Ruby String - PullRequest
0 голосов
/ 15 октября 2018

Я возиться с Руби и пытаюсь понять, как работает операция # {}.

b = "puts \'Hello World\'"
r = "Testing .... #{b}"

При запуске этого кода ничего не выводится на экран.

Однако это выводит на экран

b = "puts \'Hello World\'"
r = "Testing .... #{puts 'Hello World'}"

Почему второй пример печатает на экран, а первый нет.

Спасибо

1 Ответ

0 голосов
/ 15 октября 2018

Строковая интерполяция (операция #{}) оценивает все между этими фигурными скобками как код и преобразует возвращаемое значение из выполнения в строку и помещает эту строку вместо #{}.

.В первом примере строка r включает b, а b это просто строка "puts \'Hello World\'".В этом случае "puts" не имеет особого значения, потому что это просто строка.Таким образом, в этом первом случае r становится:

"Testing .... #{"puts \'Hello World\'"}"

, который затем становится:

"Testing .... puts \'Hello World\'"

Во втором примере вы включаете окончательное значение от выполнения puts 'Hello World' в пределахстрока r.Поскольку puts возвращает nil, r становится

"Testing .... #{nil}"

, который затем становится:

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