2012-03-18 81 views
3

我不知道如何在groovy中从n元素开始数组。Groovy动态参数

看看这个片断:

static void main(args){ 

    if (args.length < 2){ 
     println "Not enough parameters" 
     return; 
    } 

    def tools = new BoTools(args[0]) 
    def action = args[1] 

    tools."$action"(*args) 

    System.exit(1) 

} 

正如你看到我在这里做一个动态的方法调用。前两个参数被当作一些配置和方法名称,其他我想用作方法参数。 所以,我该怎么做这样的事情:

tools."$action"(*(args+2)) 

编辑:如果在本地常规的Java语法不possilbe将做到这一点:

def newArgs = Arrays.copyOfRange(args,2,args.length); 
tools."$action"(*newArgs) 
+3

这'System.exit(1)'是没有意义的。 Java不是C. – Esko 2012-03-18 19:28:30

回答

3

要从args可以使用的开始删除项目drop()方法。原来的args列表不会改变:

tools."$action"(*args.drop(2)) 

其他选项,就像你正试图从N元素访问:

tools."$action"(*args[2..-1]) 
+0

+1范围表示法。它很整齐,我们已经知道我们有> = 2个值。 – David 2012-03-18 20:40:58