2013-09-30 2 views
0

Это действительно два вопроса.формат строк и математика здесь документ

Первое: есть ли способ сделать математику внутри документа здесь?

Во-вторых: Есть ли способ использовать форматированные строки в документе здесь? Пример второй вопрос заключается в следующем:

print <<HERE 
%s 
HERE 
% 'string' 

пока что не работает.

+0

Если вы хотите систему шаблонов, возможно, вам стоит рассмотреть Erb. –

ответ

1

В ответ на ваш первый вопрос. Да, вы можете делать математику в документе «ЗДЕСЬ». Вы бы просто использовали стандартную оценку выражения # {}.

<<EOF 
This is a 
multiline doc 
with some math in it. 
#{3 *18} 
EOF 

В ответ на ваш второй вопрос; вы не можете выполнить интерполяцию строк так, как вы показываете в своем примере в документе DRE. Рассмотрим способ его оценки. Он рассматривается скорее как поток, который мгновенно оценивается, когда документ завершен.

Обычно я просто создавал ваши другие переменные перед документом ЗДЕСЬ, а затем использовал стандартную оценку выражения в вашем документе DRE.

Если вы хотите отформатировать свои строки непосредственно в документе «ЗДЕСЬ», это нужно в начале, как указал @sawa. Обратите внимание на следующий пример, как я передаю несколько строк в массиве.

<<EOF % ['string','string2','string3'] 
%s 
%s 
%s 
HERE 
2

Да для обоих. По умолчанию heredoc делает интерполяцию с #{}. Вы можете поместить в него любой Ruby-код и оценить его. (Чтобы избежать интерполяции, вы можете сделать <<'HERE'.) Для вашей второй части у вас синтаксис неправильный. Вы должны сделать:

print <<HERE % 'string' 
%s 
HERE 
Смежные вопросы