29

次のようなメール機能を提供するプラグインを使用しています。

class SendSesMail {

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

}

ドキュメントには、クラスが次のように呼び出されると記載されています。

sesMail {
    from "from@a.com"
    replyTo "reply@a.com"
    to "t@a.com", "t@b.com", "t@c.com"
    subject "Subject"
    html "Body HTML"
}

コードでListはアドレスのaが構築されており、このリストをメソッドで期待されるvarargsに変換する方法を理解しようとしています。

「、」を連結したものへの変換Stringは、無効なメールアドレスであるため機能しません。リストを繰り返し処理して各メールを個別に送信する必要がないように、各リストアイテムを個別のパラメーターに分割できる必要があります。

4

1 に答える 1

63

おそらく、スプレッド演算子、*はあなたが探しているものです:

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

def emails = ["t@a.com", "t@b.com", "t@c.com"]
to(*emails)
// Output: 
// Sending email to: t@a.com
// Sending email to: t@b.com
// Sending email to: t@c.com

メソッド呼び出しの括弧toは必須であることに注意してください。そうでない場合to *emailsは、乗算として解析されます。オーバーロードされた文法記号の不適切な選択IMO=P

于 2013-01-22T07:56:25.113 に答える