2012-03-18 2 views
3

n 요소에서 배열을 시작하는 방법이 groovy에서 가능한지 궁금합니다. 스 니펫에서Groovy Dynamic arguments

봐 :

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) 

} 

여기에 동적 메소드 호출을하고있는 중이 야 참조한다. 첫 번째 2 개의 인수는 일부 구성 및 메소드 이름으로 사용되고, 나머지는 메소드 paramerts로 사용하고자하는 것입니다. 그래서 어떻게 같은 것을 할 수 있습니다

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

편집 : 그것을 할 것입니다 기본 그루비 자바 문법에 possilbe하지 않으면 :

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

. Java는 범위 표기법에 대해 C가 아닙니다. – Esko

답변

3

당신이 사용할 수있는 args의 시작 부분에서 항목을 제거하려면 drop() 방법. 원래 인수 목록은 변경되지 않습니다 :

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

다른 옵션을, 당신은 N 요소에서 액세스하는 것입니다하려고처럼 :

`을 System.exit (1)`무의미한 것을
tools."$action"(*args[2..-1]) 
+0

+1. 그것은 깔끔하고 우리는> = 2 값을 가지고 있다는 것을 이미 알고 있습니다. – David