Другой метод может заключаться в том, чтобы сделать что-то вроде:
tasks[0..-1].each {
// Processing for all but last element
}
tasks[-1 ].each {
// Processing for last element
}
Конечно, если в списке tasks
есть только один элемент, то к нему будут применены обе обработки (если в списке нет элементов, произойдет сбой): - /
edit
Альтернатива (которую нельзя считать легко читаемой), выглядит следующим образом:
// A list of 'tasks' in our case Strings
tasks = [
'a', 'b', 'c'
]
// Create a list of Closures the length of our list of tasks - 1
processing = (1..<tasks.size()).collect { { task -> "Start $task" } }
// Append a Closure to perform on the last item in the list
processing << { task -> "Final $task" }
// Then, transpose these lists together, and execute the Closure against the task
def output = [tasks,processing].transpose().collect { task, func -> func( task ) }
После запуска output
равно:
[Start a, Start b, Final c]
И это работает со списками задач только с одним элементом