感谢@daggett提供的信息,了解groovy 3.x和4.x的不同之处
inspect()
方法。
在3.0.11中,在InvokerHelper类中,它只检查String,不检查GString:
if (arguments instanceof String) {
// xxx
}
try {
return arguments.toString();
} catch (RuntimeException ex) {
// xxx
} catch (Exception ex) {
// xxx
}
在FormatHelper类的4.0.2中,它检查
CharSequence
它同时包含String和GString:
String DQ = "\"";
if (arguments instanceof CharSequence) {
String arg = escapeBackslashes ? escapeBackslashes(arguments.toString()) : arguments.toString();
if (arguments instanceof String) {
if (!inspect) return arg;
return !escapeBackslashes && multiline(arg) ? "'''" + arg + "'''" : SQ + arg.replace(SQ, "\\'") + SQ;
}
if (!inspect) return arg;
return !escapeBackslashes && multiline(arg) ? "\"\"\"" + arg + "\"\"\"" : DQ + arg.replace(DQ, "\\\"") + DQ;
}
总的来说,我认为我们可以将其视为3.0.11中的一个bug
检查()
,并且该错误在4.0.2中不存在。