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

Что делает% {} в Ruby?

В статье Matt о высушивании тестов огурца, Аслак предлагает следующее.

Когда у меня много котировок, я предпочитаю это:

Учитывая, что% {я ввожу "# {User.first.username}" в "имя пользователя" }

Что называется конструкцией %{CONTENT}? Будет ли кто-то против ссылки на него в некоторых документах? Я не уверен, как это сделать.

Там также материал о %Q. Это эквивалентно просто %? Что из фигурных скобок? Можете ли вы использовать квадратные скобки? Они работают по-разному?

Наконец, что называется конструкцией #{<ruby stuff to be evaluated>}? Есть ли ссылка на это в документации где-то тоже?

4b9b3361

Ответ 2

Ни один из других ответов на самом деле не отвечает на вопрос.

Это обозначение знака процента. Знак процента указывает на то, что следующий символ является буквенным разделителем, и вы можете использовать любой (не буквенно-цифровой), который вы хотите. Например:

%{stuff}
%[stuff]
%?stuff?

и т.д. Это позволяет вам помещать в строку двойные кавычки, одинарные кавычки и т.д. без экранирования:

%{foo='bar with embedded "baz"'}

возвращает буквенную строку: foo = 'bar со встроенным "baz"'

За знаком процента может следовать модификатор буквы, чтобы определить, как строка интерполируется. Например, %Q[ ] - это интерполированная строка, %q[ ] - это неинтерполированная строка, %i[ ] - это неинтерполированный массив символов и т.д. Так, например:

 %i#potato tuna#

возвращает этот массив символов:

[:potato, :tuna]

Подробности здесь: Wikibooks

Ответ 3

#{1+1} называется String Interpolation.

I и Wikibooks, ссылайтесь на материал % как на "% нотации". Ссылка здесь. Обозначение % принимает любой разделитель, если он не является буквенно-цифровым. Он также может принимать модификаторы (вроде того, как регулярные выражения принимают параметры), одним из которых, что интересно, является то, разрешите ли вы #{} -строчную интерполяцию строк (это также включено по умолчанию).

% затем делает некоторые специальные вещи к нему, придавая этой нотации некоторые отличные, если немного загадочные для новичков, терпение. Например, %w{hello world} возвращает массив ['hello','world']. %s{hello} возвращает символ :hello.