Jaki jest najłatwiejszy (najlepszy) sposób szybkiego znalezienia sumy tablic liczb całkowitych? Mam tablicę o nazwie wielokrotności i chciałbym poznać sumę wielokrotności.
228
To najłatwiejsza / najkrótsza metoda, jaką mogę znaleźć.
Swift 3 i Swift 4:
let multiples = [...]
let sum = multiples.reduce(0, +)
print("Sum of Array is : ", sum)
Swift 2:
let multiples = [...]
sum = multiples.reduce(0, combine: +)
Więcej informacji:
Wykorzystuje to metodę Array'a zmniejszania ( tutaj dokumentacja ), która pozwala „zmniejszyć zbiór elementów do jednej wartości poprzez rekurencyjne zastosowanie dostarczonego zamknięcia”. Dajemy mu 0 jako wartość początkową, a następnie zasadniczo zamknięcie { $0 + $1 }
. Oczywiście możemy to uprościć do pojedynczego znaku plus, ponieważ tak właśnie działa Swift.
let totalSum = self.cheques.reduce(0) { $0 + $1.amount}
combine
. Powinno byćmultiples.reduce(0, combine: +)
.flatMap
najpierw go, aby spłaszczyć go do tablicy jednowymiarowej.multiArray.flatMap{$0}.reduce(0, combine: +)
Swift 3+ one liner, aby zsumować właściwości obiektów
Gdzie punkty są właściwością w moim niestandardowym obiekcie scaleData, który próbuję zmniejszyć
źródło
Swift3 zmienił się na:
źródło
W Swift 4 możesz również ograniczyć elementy sekwencji do protokołu numerycznego , aby zwrócić sumę wszystkich elementów w sekwencji w następujący sposób
edycja / aktualizacja:
Xcode 10.2 • Swift 5 lub nowszy
Możemy po prostu ograniczyć elementy sekwencji do nowego protokołu AdditiveArithmetic , aby zwrócić sumę wszystkich elementów w kolekcji
Xcode 11 • Swift 5.1 lub nowszy
źródło
Działa to również:
Wynik będzie: 55
źródło
Przykład Swift 4
źródło
Szybki 3
Jeśli masz tablicę obiektów ogólnych i chcesz zsumować niektóre właściwości obiektu, to:
Pomimo krótszej formy wiele razy możesz preferować klasyczny cykl rowerowy:
źródło
Co powiesz na prosty sposób
// gdzie n = liczba elementów w tablicy
źródło
var sum = 0 ; for n in multiples { sum += n }
chociaż użyłbym redukcji.Możliwe rozwiązanie: zdefiniuj dla niego operatora prefiksu. Podobnie jak operator zmniejszania „+ /” jak w APL (np. GNU APL)
Trochę innego podejścia tutaj.
Użycie protokołu w typie ogólnym pozwala nam używać tego operatora w typach tablic Double, Float i Int
użyj tak:
(zaktualizowany do Swift 2.2, przetestowany w Xcode w wersji 7.3)
źródło
Swift 3.0
miałem ten sam problem, znalazłem w dokumentacji Apple to rozwiązanie.
Ale w moim przypadku miałem listę obiektów, a następnie potrzebowałem przekształcić moją wartość mojej listy:
ta praca dla mnie.
źródło
użył tego dla parametrów zagnieżdżonych
źródło
Nie komplikuj...
Wynik:
źródło
Dla mnie było tak przy użyciu nieruchomości
źródło
Szybki 3
Ze wszystkich wyświetlonych tutaj opcji ta działała dla mnie.
źródło
Dla sumy elementów w tablicy obiektów
źródło
takie jest moje podejście do tego. jednak uważam, że najlepszym rozwiązaniem jest odpowiedź z nazwy użytkownika tbd
źródło