如何避免求值GString

问题描述

| 我正在使用groovy扩展传统脚本系统。源脚本是\“ java-like \”,因此它几乎经过少量预处理就可以解析为普通脚本。 我正在使用invokeMethod()和missingMethod()传递旧代码,从而使我能够使用闭包和其他常规功能来增强脚本。但是,原始脚本使用\“ $ 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
所以我想你必须使用预处理器才能转义字符串