Groovy:如何为全局范围的字段分配动态值

Groovy:如何为全局范围的字段分配动态值,groovy,Groovy,通过使用,我们可以为私有范围的字段分配一些值,以便这些字段可以全局访问 我有以下脚本: import groovy.transform.Field; def cli = new CliBuilder() cli.usage = 'groovy Test.groovy -e <environment-name>' cli.header = '\nAvailable options (use -h for help):\n' cli.with { h(longOpt: 'h

通过使用,我们可以为私有范围的字段分配一些值,以便这些字段可以全局访问

我有以下脚本:

import groovy.transform.Field;

def cli = new CliBuilder()

cli.usage = 'groovy Test.groovy -e <environment-name>'
cli.header = '\nAvailable options (use -h for help):\n'

cli.with {
    h(longOpt: 'help', 'Usage Information', required: false)
    e(longOpt: 'environment', 'Environment Name', args: 1, required: true)
}

def options = cli.parse(args)

if (!options || options.h) {    
    return
}

@Field def env = options.e

println env
但是如果使用
println options.e
则不使用
@Field def env=options.e
它将打印
int


如何将动态值分配给全局范围的变量?

将其移动,这样就不会将分配与字段的定义相关联

import groovy.transform.Field;

@Field def env
def cli = new CliBuilder()

cli.usage = 'groovy Test.groovy -e <environment-name>'
cli.header = '\nAvailable options (use -h for help):\n'

cli.with {
    h(longOpt: 'help', 'Usage Information', required: false)
    e(longOpt: 'environment', 'Environment Name', args: 1, required: true)
}

def options = cli.parse(args)

if (!options || options.h) {    
    return
}

env = options.e

println env
导入groovy.transform.Field;
@字段定义环境
def cli=new CliBuilder()
cli.usage='groovy Test.groovy-e'
cli.header='\n可用选项(使用-h获取帮助):\n
cli.with{
h(longOpt:'help','Usage Information',必填项:false)
e(longOpt:'environment','environment Name',参数:1,必需:true)
}
def options=cli.parse(args)
如果(!options | | options.h){
返回
}
env=options.e
打印环境
My small dirty解决方案:
import groovy.transform.Field;

@Field def env
def cli = new CliBuilder()

cli.usage = 'groovy Test.groovy -e <environment-name>'
cli.header = '\nAvailable options (use -h for help):\n'

cli.with {
    h(longOpt: 'help', 'Usage Information', required: false)
    e(longOpt: 'environment', 'Environment Name', args: 1, required: true)
}

def options = cli.parse(args)

if (!options || options.h) {    
    return
}

env = options.e

println env