Nie lubię używać tablicy indeksowanej bez żadnego powodu, poza tym, że wydaje mi się brzydka. Czy istnieje czysty sposób na sumowanie z anonimową funkcją? Czy można to zrobić bez użycia zmiennych zewnętrznych?Jaki jest najczystszy sposób, aby uzyskać sumę liczb w kolekcji/liście w Dart?
10
A
Odpowiedz
11
Dart iterables teraz posiadają funkcję redukcji (https://code.google.com/p/dart/issues/detail?id=1649), tak możesz zrobić sumaryczną sumę bez definiowania własnej funkcji składania:
var sum = [1, 2, 3].reduce((a, b) => a + b);
4
Nie jest czysty sposób to zrobić przy użyciu biblioteki podstawowych jak teraz, ale jeśli rzucisz swoją foldLeft potem jest
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;
}
Rozmawiałam z zespołem Dart o dodanie foldLeft do podstawowych kolekcji i mam nadzieję, że wkrótce to nastąpi.
4
Nadal uważam, że oczywisty sposób jest bardziej przejrzysty i łatwiejszy do zrozumienia dla tego konkretnego problemu.
num sum = 0;
[1, 2, 3].forEach((num e){sum += e;});
print(sum);
lub
num sum = 0;
for (num e in [1,2,3]) {
sum += e;
}
3
int sum = [1, 2, 3].fold(0, (previous, current) => previous + current);
lub krótszych nazw zmiennych, aby zająć mniej miejsca:
int sum = [1, 2, 3].fold(0, (p, c) => p + c);
Powiązane problemy
- 1. Jaki jest najczystszy sposób na napisanie ciągu wielowierszowego w JavaScript?
- 2. W jaki sposób Google Dart może uzyskać lepszą wydajność?
- 3. Jaki jest najczystszy sposób sortowania wyników zapytania "opisz tabelę"?
- 4. Jaki jest najczystszy sposób na wykorzystanie uwierzytelniania formularzy z ServiceStack?
- 5. Jaki jest najczystszy sposób na uzyskanie sumy kontrolnej tablicy wielowymiarowej?
- 6. Jaki jest najczystszy sposób sortowania plus uniq na liście Pythona?
- 7. Najczystszy sposób resetowania formularzy
- 8. Jaki jest najlepszy sposób na uzyskanie liczb losowych w NumPy?
- 9. Jak uzyskać sumę tablicę ciągów w ruby
- 10. Najczystszy sposób wyszukiwania w tablicy 2D?
- 11. PHP: Najczystszy sposób na modyfikację tablicy wielowymiarowej?
- 12. Jaki jest sposób Qt, aby uzyskać przecięcie między dwiema QListami?
- 13. Najczystszy sposób przełączania zmiennej binarnej w Javie?
- 14. W jaki sposób uzyskać kod T-SQL, aby znaleźć duplikaty?
- 15. użyciu LINQ znaleźć skumulowaną sumę tablicę liczb w C#
- 16. Jaki jest najczystszy sposób dołączania i uzyskiwania dostępu do danych binarnych w VC++ Express?
- 17. Jaki jest najczystszy sposób na przetwarzanie niewrażliwe na wielkość liter w Text.Combinators.Parsec?
- 18. Jak znaleźć sumę wszystkich liczb w tablicy w Javie?
- 19. Okrągły wektor liczb do liczb całkowitych, zachowując ich sumę
- 20. Jaki jest sposób, aby skopiować katalog
- 21. Python, najlepszy sposób, aby napisać sumę dwóch dla pętli
- 22. Jaki jest sposób, aby to napisać?
- 23. Gdzie jest Math.round() w Dart?
- 24. Jaki jest najlepszy sposób, aby logować użytkownika programowo w ExpressionEngine
- 25. Jaki jest najprostszy sposób, aby obraz był dotykalny w libgdx?
- 26. Jaki jest najlepszy sposób w ES6, aby przypisać stałą warunkowo?
- 27. Jak uzyskać skumulowaną sumę
- 28. Najczystszy sposób wywoływania wielu uwierzytelnień AuthenticationSuccessHandlers?
- 29. Jak mogę uzyskać nazwę pliku w Dart?
- 30. Jaki jest najczystszy sposób na usunięcie Homestead i Vagrant z systemu Windows?
Można to rozwiązać, dodając funkcję wstrzykiwania do interfejsu kolekcji, tak jak w Ruby. –
To bardzo ładny kod, Lars. Nie tylko to było to, czego szukałem, teraz rozumiem składanie. –
Z pewnością można to zrobić z anonimową funkcją, z lub bez kodu bibliotecznego, aby to zrobić, po prostu wpisując kod w foldLeft powyżej. I prawie zawsze będziesz potrzebować zmiennej, chyba że jesteś nadmiernie sprytny z rekurencją. Możesz też po prostu zrobić to za pomocą for (var each in ...) zamiast forEach i zastosować tę funkcję w ciele pętli for. Albo działa. –