如何避免评估GString

时间:2011-04-27 14:38:12

标签: groovy gstring

我正在使用groovy扩展遗留脚本系统。源脚本是“类似Java的”,因此它主要通过一些预处理来解析为groovy脚本。

我正在使用invokeMethod()和missingMethod()来传递遗留代码,使我能够使用闭包和其他常规功能来增强脚本。但是,原始脚本使用“$ foo”类型的字符串来引用变量。当missMethod()捕获遗留方法时,我需要它不将此字符串作为GString计算,而只是逐字输出。这有可能吗?

1 个答案:

答案 0 :(得分:4)

有两种方法可以逃避$ foo:

  1. 将'$'转换为'\ $'
  2. 使用'代替'作为字符串分隔符
  3. 示例:

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

    所以我猜你必须使用你的预处理器来逃避你的字符串