2014-04-04 98 views
3

是否可以從命令行調用groovy腳本方法而不使用手動映射args [] - > method_to_call?是否可以從命令行調用groovy腳本方法?

例如,如果我有Groovy腳本 'MyGroovyScript.groovy',如:

def foo() { 

} 

def bar() { 

} 

我想調用foo()方法在命令行中,如:

groovy MyGroovyScript.groovy foo 
+0

而不是從groovy腳本調用方法您可以將方法的主體放入腳本本身 - 它將在腳本運行時被調用和處理。 – Opal

+0

@Opal是的,我知道,但這不是我想要的。 – XZen

+0

關於您正在尋找什麼的更多細節? – Opal

回答

4

最近我相信你可以得到的是:

def foo() { 
    println "foo called" 
} 

def bar() { 
    println "bar called" 
} 

def woo(a, b) { 
    println "Woo called with a=$a and b=$b" 
} 

static main(args) { 
    if(args) { 
     "${args.head()}"(*args.tail()) 
    } 
} 

然後運行下面的命令給出以下輸出:

$ groovy test.groovy foo 
foo called 

$ groovy test.groovy bar 
bar called 

$ groovy test.groovy woo tim yates 
Woo called with a=tim and b=yates 
+1

是的,但OP聲明:「沒有使用手動映射參數[] - > method_to_call」 – Opal

+0

是的,這是_「最接近我相信你可以得到」_: - /它幾乎是*自動的,比檢查參數對於'foo'或'bar' ;-) –

+0

看起來不錯,但仍然沒有得到它是如何工作的:''$ {args.head()}「(* args.tail())'。無論如何,請儘量自行調查,謝謝! :) – XZen

相關問題