0

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

首先是:有没有办法在此处的文档中进行数学运算?

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

print <<HERE
%s
HERE
% 'string'

但这不起作用。

谢谢

4

2 回答 2

2

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

print <<HERE % 'string'
%s
HERE
于 2013-09-30T02:20:15.930 回答
1

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

<<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
于 2013-09-30T02:11:53.363 回答