Подтвердить что ты не робот

Groovy конвертировать из списка в var args для вызова метода

Я использую плагин, который предоставляет функции электронной почты следующим образом:

class SendSesMail {

    //to
    void to(String ... _to) { 
        this.to?.addAll(_to)
        log.debug "Setting 'to' addresses to ${this.to}"
    }

}

В документации указано, что класс вызывается следующим образом:

sesMail {
    from "[email protected]"
    replyTo "[email protected]"
    to "[email protected]", "[email protected]", "[email protected]"
    subject "Subject"
    html "Body HTML"
}

В коде создается адрес List адресов, и я пытаюсь выяснить, как преобразовать этот список в аргументы var args, ожидаемые методом.

Преобразование в String, связанное с "," не работает, так как это недопустимый адрес электронной почты. Мне нужно иметь возможность разделить каждый элемент списка на отдельный параметр, чтобы избежать необходимости перебирать список и отправлять каждое электронное письмо отдельно.

4b9b3361

Ответ 1

Вероятно, оператор распространения * - это то, что вы ищете:

def to(String... emails) {
    emails.each { println "Sending email to: $it"}
}

def emails = ["[email protected]", "[email protected]", "[email protected]"]
to(*emails)
// Output: 
// Sending email to: [email protected]
// Sending email to: [email protected]
// Sending email to: [email protected]

Обратите внимание, что круглые скобки вызова метода to являются обязательными, так как иначе to *emails будет анализироваться как умножение. Плохой выбор перегруженных символов грамматики IMO = P