Scala 是否有来自 Array 类的 Rubys 的each_slice版本?
问问题
486 次
2 回答
12
Scala 2.8grouped
可以将数据分块为大小块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
于 2010-03-16T16:37:29.137 回答
6
使用 Scala 2.8 测试:
scala> (1 to 10).grouped(3).foreach(println(_))
IndexedSeq(1, 2, 3)
IndexedSeq(4, 5, 6)
IndexedSeq(7, 8, 9)
IndexedSeq(10)
于 2010-03-16T16:37:45.923 回答