No me gusta usar una matriz indexada sin más motivo que el que creo que se ve feo. ¿Hay una manera limpia de sumar con una función anónima? ¿Es posible hacerlo sin usar ninguna variable externa?¿Cuál es la forma más limpia de obtener la suma de números en una colección/lista en Dart?
10
A
Respuesta
11
dardo iterables ahora tienen una función reduce (https://code.google.com/p/dart/issues/detail?id=1649), por lo puede hacer una suma concisa sin definir su propia función de plegado:
var sum = [1, 2, 3].reduce((a, b) => a + b);
4
No hay una manera limpia de hacerlo utilizando las bibliotecas del núcleo como lo son ahora, pero si sacas tu propia foldLeft entonces hay
main() {
var sum = foldLeft([1,2,3], 0, (val, entry) => val + entry);
print(sum);
}
Dynamic foldLeft(Collection collection, Dynamic val, func) {
collection.forEach((entry) => val = func(val, entry));
return val;
}
Hablé con el equipo dardo sobre la adición de foldLeft a las colecciones principales y espero que esté allí pronto.
4
Sigo pensando que la manera obvia es más clara y más fácil de entender para este problema en particular.
num sum = 0;
[1, 2, 3].forEach((num e){sum += e;});
print(sum);
o
num sum = 0;
for (num e in [1,2,3]) {
sum += e;
}
3
int sum = [1, 2, 3].fold(0, (previous, current) => previous + current);
o con nombres de variables más cortos para que sea ocupan menos espacio:
int sum = [1, 2, 3].fold(0, (p, c) => p + c);
Cuestiones relacionadas
- 1. ¿Cuál es la forma más limpia de obtener una suma de comprobación de una matriz multidimensional?
- 2. En Ruby, ¿cuál es la forma más limpia de obtener el índice del valor más grande en una matriz?
- 3. ¿Cuál es la forma limpia de probar FileField en django?
- 4. ¿Cuál es la forma más limpia de escribir una cadena multilínea en JavaScript?
- 5. ¿Cuál es la forma más limpia de ordenar los resultados de la consulta "describir la tabla"?
- 6. PHP: ¿La forma más limpia de modificar una matriz multidimensional?
- 7. ¿Cuál es la forma más limpia de conectar automáticamente Spring Beans en un JSP?
- 8. ¿Cuál es la forma más limpia de hacer una clasificación más uniq en una lista de Python?
- 9. ¿Cuál es la forma más limpia de mostrar un objeto java.util.Calendar en JSF?
- 10. ¿Cuál es la forma más limpia de simular pass-by-reference en Actionscript 3.0?
- 11. ¿Cuál es la mejor/más limpia forma de implementar las pruebas A-B en asp.net mvc?
- 12. ¿Cuál es la forma más fácil de llenar los vacíos en una lista de números?
- 13. ¿Cuál es la forma más pitónica de calcular los cambios porcentuales en una lista de números?
- 14. ¿Cuál es la forma más limpia de escribir un ciclo sin bloqueo en javascript?
- 15. Vector limpia cada iteración de bucle. ¿Cuál es la forma más eficiente de memoria?
- 16. ¿Cuál es la forma más rápida de obtener la media de un conjunto de números desde la línea de comando?
- 17. En ASP.NET, ¿cuál es la forma más rápida de obtener la URL base para una solicitud?
- 18. ¿Cuál es la forma más fácil de acceder a un micrófono de una computadora en Python?
- 19. ¿Cuál es la forma más limpia de establecer la variable de entorno DYLD_FRAMEWORK_PATH para una compilación de versión?
- 20. ¿Cuál es la forma más sencilla de obtener resultados de scripts de Python en la web?
- 21. Cálculo de la suma de números enteros en una matriz
- 22. ¿Cuál es la forma más rápida de crear una suma de comprobación para archivos grandes en C#
- 23. ¿Cuál es la forma más fácil de obtener una OutOfMemoryException en C#?
- 24. En Java, ¿cuál es la forma más rápida de obtener la hora del sistema?
- 25. ¿Cuál es la forma más fácil de animar una línea?
- 26. ¿Cuál es una forma mejor y más limpia de usar List <T>
- 27. ¿La manera más limpia y más Pythonic de obtener la fecha de mañana?
- 28. ¿Cuál es una forma (o patrón) limpia para hacer la verificación de parámetros de funciones?
- 29. ¿Cuál es la forma más rápida de sumar una colección en Scala
- 30. ¿Cuál es la forma más limpia de duplicar la funcionalidad de base/parent.pm para módulos perl sin objetos?
Esto podría abordarse agregando una función de inyección a la interfaz de colección como en Ruby. –
Ese es un código muy bonito, Lars. No solo era lo que estaba buscando, ahora entiendo plegable. –
Sin duda puede hacerlo con una función anónima, con o sin código de biblioteca para hacerlo, simplemente insertando el código en foldLeft arriba. Y casi siempre vas a necesitar una variable, a menos que seas excesivamente inteligente con recursividad. Alternativamente, también puede hacerlo con a para (var cada en ...) en lugar de para Each, y aplicar la función en el cuerpo del bucle for. Cualquiera de los dos funciona –