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の変数拡張ルールは、他の言語とは大きく異なります。ブーストジャムのドキュメントから:

変数展開後のトークンの結果は、トークンのコンポーネントの積です。各コンポーネントは、リテラルの部分文字列または変数参照を置き換えるリストです。

つまり、jamは「HelloWorld $(b)」を「HelloWorld $(b [1])」「HelloWorld $(b [2])」に拡張し、それをエコーし​​ています。

「HelloWorld23」が必要な場合は、echo引数を2つのトークンに分割する必要があります

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