这实际上是两个问题的结合。
首先是:有没有办法在此处的文档中进行数学运算?
第二:有没有办法在here文档中使用格式字符串?第二个问题的一个例子是:
print <<HERE
%s
HERE
% 'string'
但这不起作用。
谢谢
这实际上是两个问题的结合。
首先是:有没有办法在此处的文档中进行数学运算?
第二:有没有办法在here文档中使用格式字符串?第二个问题的一个例子是:
print <<HERE
%s
HERE
% 'string'
但这不起作用。
谢谢
两者都是。默认情况下,heredoc 使用#{}
. 您可以将任何 Ruby 代码放入其中,并对其进行评估。(为避免插值,您可以这样做<<'HERE'
。)对于第二部分,您的语法错误。你应该做:
print <<HERE % 'string'
%s
HERE
在回答你的第一个问题。是的,您可以在 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