2 ответа:
Scala 2.8 имеет
grouped
, которые будут разделять данные на блоки размеромn
(которые могут быть использованы для достижения функциональностиeach_slice
):scala> val a = Array(1,2,3,4,5,6) a: Array[Int] = Array(1, 2, 3, 4, 5, 6) scala> a.grouped(2).foreach(i => println(i.reduceLeft(_ + _)) ) 3 7 11
В 2.7 нет ничего, что будет работать из коробки.x, насколько я помню, но его довольно легко построить из
take(n)
иdrop(n)
изRandomAccessSeq
:def foreach_slice[A](s: RandomAccessSeq[A], n: Int)(f:RandomAccessSeq[A]=>Unit) { if (s.length <= n) f(s) else { f(s.take(n)) foreach_slice(s.drop(n),n)(f) } } scala> val a = Array(1,2,3,4,5,6) a: Array[Int] = Array(1, 2, 3, 4, 5, 6) scala> foreach_slice(a,2)(i => println(i.reduceLeft(_ + _)) ) 3 7 11