我认为这段代码的输出是
Hello World 1
Hello World 2 3
但我明白了
Hello World 1
Hello World 2 Hello World 3
这是果酱代码
rule weird ( a : b + : c * : d ? )
{
echo "Hello World $(a)" ;
echo "Hello World $(b)" ;
}
weird 1 : 2 3 ;
Jam 的变量扩展规则与其他语言有很大不同。来自boost jam 文档:
变量扩展后的标记的结果是标记的组件的乘积,其中每个组件是文字子字符串或替换变量引用的列表。
因此 jam 正在将“Hello World $(b)”扩展为“Hello World $(b[1])”“Hello World$(b[2])”并回应这一点。
如果要“Hello World 2 3”,则需要将 echo 参数拆分为两个标记
echo "Hello World" $(b) ;