groovy: how to pass varargs and closure in same time to a method?

后端 未结 3 1185
野性不改
野性不改 2021-02-20 11:39

Given following groovy function:

def foo(List params, Closure c) {...}

The method call would be:

foo([\'a\', \'b         


        
3条回答
  •  无人共我
    2021-02-20 12:21

    Seeing that it's impossible to achieve exactly what you want (it's written in Groovy documentation that your specific case is a problem, unfortunately they are migrating the docs so I can't directly link right now), what about something along these lines:

    def foo(String... params) {
        println params
        return { Closure c ->
            c.call()
        }
    }
    
    foo('a', 'b') ({ println 'woot' })
    

    Now you need to put the closure in parantheses, but you don't need to use an array anymore..

提交回复
热议问题