Groovy Динамические аргументы - PullRequest
3 голосов
/ 18 марта 2012

Интересно, как это возможно в groovy для запуска массива из элемента n.

Посмотрите на фрагмент:

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 аргумента берутся в качестве некоторых настроек и имени метода, остальные я бы хотел использовать в качестве параметров метода. Итак, как я могу сделать что-то вроде этого:

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

Отредактировано: если не возможно в родном отличном синтаксисе Java, сделаем это:

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

1 Ответ

3 голосов
/ 18 марта 2012

Чтобы удалить элементы из начала args, вы можете использовать метод drop().Исходный список аргументов не изменяется:

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

Другой вариант, который вы пытаетесь получить, - это доступ к элементу N:

tools."$action"(*args[2..-1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...