Я хочу определить замыкание, которое принимает один аргумент (который я называю с it
)
Иногда я хочу передать еще один аргумент в закрытие.
Как я могу это сделать?
Groovy Закрытие с дополнительными аргументами
Ответ 1
Вы можете установить второй аргумент по умолчанию (например, null):
def cl = { a, b=null ->
if( b != null ) {
print "Passed $b then "
}
println "Called with $a"
}
cl( 'Tim' ) // prints 'Called with Tim'
cl( 'Tim', 'Yates' ) // prints 'Passed Yates then Called with Tim
Другой вариант - сделать b
vararg List следующим образом:
def cl = { a, ...b ->
if( b ) {
print "Passed $b then "
}
println "Called with $a"
}
cl( 'Tim' ) // prints 'Called with Tim'
cl( 'Tim', 'Yates' ) // prints 'Passed [Yates] then Called with Tim
cl( 'Tim', 'Yates', 'Groovy' ) // prints 'Passed [Yates, Groovy] then Called with Tim
Ответ 2
надеюсь, что это поможет
def clr = {...a ->
print "Passed $a then "
enter code here
}
clr('Sagar')
clr('Sagar','Rahul')