4

groovy を使用して従来のスクリプト システムを拡張する作業を行っています。ソース スクリプトは「Java に似ている」ため、ほとんどの場合、前処理が少しあるグルーヴィーなスクリプトとして解析されます。

私は、invokeMethod() と missingMethod() を使用してレガシー コードをパススルーし、クロージャやその他のグルーヴィーな機能を使用してスクリプトを拡張できるようにしています。ただし、元のスクリプトでは、「$foo」型の文字列を使用して変数を参照しています。レガシー メソッドが missingMethod() によって捕捉された場合、この文字列を GString として評価するのではなく、そのまま出力する必要があります。これは何らかの方法で可能ですか?

4

1 に答える 1

6

$foo をエスケープする方法は 2 つあります。

  1. 「$」を「\$」としてエスケープします
  2. 文字列区切り文字として " の代わりに ' を使用する

例:

 def test = "bad"
 def s0 = "$test"
 def s1 = "\$test"
 assert s1 != s0
 def s2 = '$test'
 assert s2 == s1
 println s0
 println s1
 println s2

したがって、文字列をエスケープするには、プリプロセッサを使用する必要があると思います

于 2011-05-17T07:24:01.633 に答える