Какой самый простой (лучший) способ найти сумму массива целых чисел в swift? У меня есть массив с именем кратных, и я хотел бы знать сумму кратных.
229
Это самый простой / самый короткий метод, который я могу найти.
Свифт 3 и Свифт 4:
let multiples = [...]
let sum = multiples.reduce(0, +)
print("Sum of Array is : ", sum)
Свифт 2:
let multiples = [...]
sum = multiples.reduce(0, combine: +)
Еще немного информации:
При этом используется метод снижения массива (документация здесь ), который позволяет «уменьшить коллекцию элементов до одного значения путем рекурсивного применения предоставленного замыкания». Мы даем ему 0 в качестве начального значения, а затем, по сути, замыкание { $0 + $1 }
. Конечно, мы можем упростить это до единого знака плюс, потому что так крутится Swift.
let totalSum = self.cheques.reduce(0) { $0 + $1.amount}
combine
. Должно бытьmultiples.reduce(0, combine: +)
.flatMap
его, чтобы сгладить его в одном массиве измерений.multiArray.flatMap{$0}.reduce(0, combine: +)
Swift 3+ один лайнер для суммирования свойств объектов
куда точки - это свойство в моем пользовательском объекте scaleData, которое я пытаюсь уменьшить
источник
Swift3 изменился на:
источник
В Swift 4 Вы также можете ограничить элементы последовательности числовым протоколом, чтобы он возвращал сумму всех элементов в последовательности следующим образом
редактировать / обновление:
Xcode 10.2 • Swift 5 или новее
Мы можем просто ограничить элементы последовательности новым протоколом AdditiveArithmetic , чтобы вернуть сумму всех элементов в коллекции
Xcode 11 • Swift 5.1 или новее
источник
Это также работает:
Результат будет: 55
источник
Swift 4 пример
источник
Свифт 3
Если у вас есть массив универсальных объектов и вы хотите суммировать некоторые свойства объекта, то:
Несмотря на более короткую форму, много раз вы можете предпочесть классический цикл for:
источник
Как насчет простого способа
// где n = количество элементов в массиве
источник
var sum = 0 ; for n in multiples { sum += n }
хотя я бы использовал уменьшить.Возможное решение: определить для него префиксный оператор. Как и оператор «+ /» уменьшения, как в APL (например, GNU APL)
Здесь немного другой подход.
Использование протокола общего типа позволяет нам использовать этот оператор в массивах типа Double, Float и Int.
использовать так:
(обновлено для Swift 2.2, протестировано в версии Xcode 7.3)
источник
Swift 3.0
У меня была такая же проблема, я нашел в документации Apple это решение.
Но в моем случае у меня был список объектов, тогда мне нужно было преобразовать значение моего списка:
эта работа для меня.
источник
использовал этот для вложенных параметров
источник
Будь проще...
Вывод:
источник
Для меня это было так, используя свойство
источник
Свифт 3
Из всех вариантов, показанных здесь, это тот, который работал для меня.
источник
Для суммы элементов в массиве объектов
источник
это мой подход по этому поводу. Однако я считаю, что лучшим решением является ответ от имени пользователя пользователя TBD
источник