格式字符串和数学在这里文档

时间:2013-09-30 01:39:40

标签: ruby

这实际上是两个问题的组合。

首先是:在这里的文件中有没有办法做数学?

第二:在这里的文档中有没有办法使用格式字符串? 第二个问题的一个例子是:

print <<HERE
%s
HERE
% 'string'

然而这不起作用。

Thankss

2 个答案:

答案 0 :(得分:2)

两者都是。默认情况下,heredoc使用#{}进行插值。您可以在其中放置任何Ruby代码,并对其进行评估。 (为避免插值,您可以执行<<'HERE'。)对于第二部分,您的语法错误。你应该这样做:

print <<HERE % 'string'
%s
HERE

答案 1 :(得分:1)

回答你的第一个问题。是的,你可以在HERE doc中做数学。您只需使用标准的#{}表达式评估。

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

回答你的第二个问题;你不能以你在HERE文档中的示例中显示的方式进行字符串插值。考虑一下它的评估方式。它更像是在文档结束时立即评估的流。

通常我会在HERE文档之前创建您的其他变量,然后在您的HERE文档中使用标准表达式评估。

如果您想直接在HERE文档中格式化字符串,则需要在@sawa指出时开始。请注意以下示例中我如何以数组方式传递多个字符串。

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