我正在使用groovy扩展遗留脚本系统。源脚本是"类java"的,因此它主要是作为经过少量预处理的groovy脚本进行解析。
我使用invokeMethod()和missingMethod()来传递遗留代码,使我能够使用闭包和其他groovy特性来增强脚本。但是,原始脚本使用"$foo"类型的字符串来引用变量。当遗留方法被missingMethod()捕获时,我需要它不将此字符串作为GString计算,而只是逐字输出它。这有可能吗?
有两种方法可以转义$foo:
- 将'$'转义为'$'
- 使用'代替'作为字符串分隔符
的例子:
def test = "bad"
def s0 = "$test"
def s1 = "$test"
assert s1 != s0
def s2 = '$test'
assert s2 == s1
println s0
println s1
println s2
所以我猜你必须使用预处理器来转义字符串