Ответ tim_yates - это круто, но он выбрасывает java.lang.ArrayIndexOutOfBoundsException
в пустые списки (например: [].partition(4)
). Это можно исправить следующим образом:
List.metaClass.partition = {size ->
if (!delegate)
return []
def rslt = delegate.inject([[]]) {ret, elem ->
(ret.last() << elem).size() >= size ? (ret << []) : ret
}
!rslt.last() ? rslt[0..-2] : rslt
}
assert [].partition(4) == []
assert [1, 2, 3, 4, 5, 6].partition(4) == [[1, 2, 3, 4], [5, 6]]