6

groovyScript我的IntellijIDEA 实时模板中有一个,如下所示:

groovyScript("D:/test.groovy","", v1)

D:/test.groovy有这样的代码:

if ( v1 == 'abc') {
    'abc'
}

现在我想将 v1 变量传递给 test.groovy ,有人可以帮我怎么做吗?

4

4 回答 4

6

出于示例的目的,我制作了一个实时模板,它使用当前类和当前方法打印评论。

这就是我的实时模板的定义方式:

在此处输入图像描述

以下是我编辑variableResolvedWithGroovyScript变量的方法:

在此处输入图像描述

给定变量的表达式具有以下值:

groovyScript("return \"// Current Class:\" + _1 + \". Current Method:\"+ _2 ", className(),methodName())

如您所见,在这种情况下,_1(其作用类似于 groovy 脚本中的变量)获取第一个参数的值,即类名,_2 获取第二个参数的值,即方法名。如果需要另一个参数, _3 将在 groovy 脚本中用于引用给定参数。

于 2018-03-07T17:01:17.330 回答
2

我找到了解决方案。

我需要使用实时模型计算合格类名的 CRC32

我这样使用它:

groovyScript("   
def crc = new java.util.zip.CRC32().with { update _1.bytes; value }; 
return Long.toHexString(crc);  
", qualifiedClassName())

在此处输入图像描述

那么结果是

在此处输入图像描述

于 2019-02-07T19:05:03.707 回答
2

groovyScript 宏的参数绑定到名为 _1、_2 等的脚本变量。这也在 groovyScript 帮助中的Edit Template Variables Dialog / Live Template Variables中进行了描述。

于 2016-02-15T13:42:52.790 回答
0

根据文档,您的变量可用作_1,_2等。请注意,变量传递时不带美元符号(因此只有v1而不是$v1$

所以你的测试脚本应该看起来像

if ( _2 == 'abc') {
    'abc'
}
于 2019-06-07T08:44:51.323 回答