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

Groovy Закрытие с дополнительными аргументами

Я хочу определить замыкание, которое принимает один аргумент (который я называю с it) Иногда я хочу передать еще один аргумент в закрытие. Как я могу это сделать?

4b9b3361

Ответ 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')