无法在Groovyshell上应用Newify

时间:2018-10-29 07:39:21

标签: groovy groovyshell

我想在Groovyshell的帮助下运行一些动态脚本。但是,我不想在动态脚本中编写新的关键字。因此,我想到了添加带有Newify关键字的CompilerConfiguration。但是,事情没有按预期进行。

CompilerConfiguration configuration = new CompilerConfiguration()
 configuration.addCompilationCustomizers(
            new ASTTransformationCustomizer(
                    [pattern: "[A-Za-z0-9].*"],
                    Newify
            ))
GroovyShell shell = new GroovyShell(profile, configuration)

仍然出现错误

找不到匹配方法sample#BoundingRegion(int,int,int,int)

其中BoundingRegion是一个类

1 个答案:

答案 0 :(得分:0)

也许您需要提供更多信息。这对我有用:

import org.codehaus.groovy.control.*
import org.codehaus.groovy.control.customizers.*

def script = '''
class Main {
    static main(args) {
        assert BigInteger.new(42).toString() == '42' // Ruby style
        assert BigDecimal('3.14').toString() == '3.14' // Python style matching regex
    }
}
'''

def configuration = new CompilerConfiguration()
configuration.addCompilationCustomizers(
        new ASTTransformationCustomizer(
                [pattern: "[A-Za-z0-9].*"],
                Newify
        ))

new GroovyShell(configuration).evaluate(script)