¿Qué hace realmente el método inject
en Groovy? Busqué en Google y no encontré la respuesta exacta. ¿Alguien puede especificar su uso con un simple ejemplo?¿Qué es el método Inject en Groovy?
Respuesta
Aplica una operación a una colección y realiza un seguimiento de un valor intermedio. Tome este ejemplo: [1, 2, 3, 4].inject(0, { sum, value -> sum + value })
. Esto dice que use 0 como el valor inicial y aplique la operación de suma al resultado intermedio y a cada elemento en secuencia. Cada aplicación de la operación genera un nuevo resultado intermedio. En este caso, el cierre suma los números, por lo que genera la suma de la lista. Se puede imaginar que le gusta:
<initial value> <operation> <element1> <operation> ... <elementn>
O, en el caso de [1, 2, 3, 4].inject(0, { sum, value -> sum + value })
:
0 + 1 + 2 + 3 + 4
para encontrar el producto de una lista, puede utilizar [1, 2, 3, 4].inject(1, { product, value -> product * value})
. En este caso, 1 se usa como valor inicial, ya que es el valor de identidad para la multiplicidad.
Aquí hay un ejemplo que divide una lista de cadenas de varias palabras en una lista plana de las palabras:
strings = ["", "this", "is a", "test of inject!"]
words = strings.inject([], { list, value -> list + value.tokenize() })
assert words == ["this", "is", "a", "test", "of", "inject!"]
Otros términos que se utilizan a veces para describir esta operación son "reducir", como en MapReduce, o un "pliegue" (específicamente un foldl).
- 1. ¿Qué tan estable es el lenguaje Groovy?
- 2. ¿Por qué necesito usar .inject (0) en lugar de .inject para que esto funcione?
- 3. Guice inject en el servlet
- 4. ¿Qué tan utilizable es Groovy ++?
- 5. ¿Es posible reemplazar el método Groovy por un objeto existente?
- 6. groovy: cómo simplificar/reescribir este método en groovy
- 7. ¿Qué significa "privado" en Groovy?
- 8. ¿Cómo funciona cualquier método en Groovy?
- 9. ¿Qué es el método en línea?
- 10. ¿Todo el código de Groovy es válido con Groovy ++?
- 11. Inject vs ManagedProperty
- 12. ¿Cómo hacer alias de método en groovy?
- 13. ¿Cuál es el uso de la palabra clave/método "usar" en groovy?
- 14. ¿Qué significa final en Groovy
- 15. ¿Qué significa .delegate en groovy?
- 16. "(1..4) .inject (y +)" trabajo en Rubí
- 17. El patrón de decorador y @Inject
- 18. ¿Qué es la biblioteca SOAP estándar para usar en groovy?
- 19. Groovy, ¿qué significa ->
- 20. ¿Qué está haciendo Groovy aquí?
- 21. ¿Es posible poner varias clases groovy en el mismo archivo groovy?
- 22. ¿Por qué es necesario el método DataBind()?
- 23. ¿Qué es el método BlockingCollection.TakeFromAny útil para
- 24. ¿Cuál es el propósito de la clase NullObject en Groovy?
- 25. Donde puedo encontrar @Inject jar
- 26. ¿Cuál es la diferencia entre @Inject y @Autowired
- 27. ¿Qué significa el operador groovy << en este contexto?
- 28. GWT inject script element en el archivo html
- 29. ¿Qué es un método generativo?
- 30. ¿Qué es un método global?
¿podría decir en el ejemplo, qué hace tokenize? –
Tokenize solo divide una cadena en espacios en blanco. Es lo mismo que String.split, excepto que devuelve una lista en lugar de una matriz. – ataylor
Una elección muy extraña del nombre del método. Me pregunto por qué no se denominó reducir o plegar. –