¿Scala tiene una versión de Rubys 'each_slice de la clase Array?¿Versión de Scala de cada uno de Rubys?
8
A
Respuesta
12
Scala 2.8 tiene grouped
que va a trozo de los datos en bloques de tamaño n
(que puede ser utilizado para lograr each_slice
funcionalidad):
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
no hay nada que va a funcionar fuera de la caja en 2,7 .x por lo que yo recuerdo, pero es bastante fácil de construir a partir de take(n)
y drop(n)
de 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
6
probado con 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)
Cuestiones relacionadas
- 1. equivalente a Scala del mapa de Ruby. Cada uno?
- 2. Cancelar Rubys Shoes animación
- 3. Jquery cada uno() Contador
- 4. validar al menos uno de cada has_and_belongs_to_many
- 5. ¿Cómo cada uno de los hashmap?
- 6. ¿Cómo obtengo la versión de Scala dentro de Scala?
- 7. Reemplazando jQuery cada uno por
- 8. ¿Cada uno para el objeto?
- 9. PHP Envío de correos masivos: ¿uno para cada uno o uno para todos?
- 10. Scala SBT: Scala versión del compilador
- 11. Git: Administrar cada versión de mi aplicación?
- 12. ¿Hay una versión Scala de NavigableMap?
- 13. límite de resultados de cada uno en handlebars.js
- 14. ¿Cómo controlar cada uno de los estados de SMS enviados?
- 15. ¿Cómo mostrar cada div, uno por uno en jquery?
- 16. Cómo seleccionar varios nodos en uno para cada uno XSLT
- 17. Usando ets: foldl como pobre para cada uno de cada registro
- 18. versión de actualización cada vez que se hace git push?
- 19. Fundido en cada elemento - uno tras otro
- 20. ¿Es "específico para Microsoft" para cada uno?
- 21. ¿Qué versión 4.x de gcc debería uno usar?
- 22. Contador automático en Ruby para cada uno?
- 23. XSL-para cada uno y el valor de
- 24. Java para cada uno, pero múltiples tipos de iteradores?
- 25. Alternativa de JavaScript al bucle "para cada uno"
- 26. MySQL obtiene valores distintos y cuenta cuántos de cada uno?
- 27. ¿Cómo podría uno "describir git" cada confirmación?
- 28. cómo hacer jQuery cada uno un número
- 29. jQuery cada uno() con un retraso
- 30. jQuery: el uso directo() con cada uno()
Sería mejor crear una clase de envoltura 'Array', que utilizaba el' Array' original como el back-end, aunque actualmente solo una parte del mismo. Un método 'eachSlice' implícito podría agregarse luego a' Array', y devolver 'List [ArraySlice]'. ¿No quieres intentarlo en tu respuesta? :-) No puedo darte más votos, pero te admiro. :-) :-) –
@Daniel: Jajaja - sí, eso sería mejor (más rápido), pero si no va a una biblioteca en algún lugar (¿y por qué lo haría ya que ya tenemos 'agrupado' en 2.8?), Creo Lo dejaré como un ejercicio para el lector. –
Funcionaría mejor para los algoritmos in situ. Siempre puede enviarlo para mejorar Scala. Sin embargo, es mejor inscribirse primero en el formulario de contribuyente. Me gustaría ver tal opción disponible. –