1

我认为这段代码的输出是

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 ;
4

1 回答 1

0

Jam 的变量扩展规则与其他语言有很大不同。来自boost jam 文档

变量扩展后的标记的结果是标记的组件的乘积,其中每个组件是文字子字符串或替换变量引用的列表。

因此 jam 正在将“Hello World $(b)”扩展为“Hello World $(b[1])”“Hello World$(b[2])”并回应这一点。

如果要“Hello World 2 3”,则需要将 echo 参数拆分为两个标记

echo "Hello World" $(b) ;
于 2012-06-25T03:47:15.403 回答