Помогите решить задачку !

swift
ios

#1

Добрый день .Покажите пожалуйста как решается задача !!! Условие: *Необходимо реализовать функцию, которая принимаем массив опциональных значений типа Integer и возвращает кортеж, в который необходимо передать сумму четных и нечетных значений.Массив может содержать повторяющиеся и nil значения *В вычислении должны быть использованы только уникальные значения, а повторяющиеся учитываться не должны. *Для развертывания опционала нужно использовать (optional binding).

Массив arrayOfNumbers : [Int?]


#2
func sum(array: [Int?]) -> (even: Int, odd: Int) {
    var evenSum = 0
    var oddSum = 0
    
    Set(array.compactMap { $0 }).forEach {
        if $0 % 2 == 0 {
            evenSum += $0
        } else {
            oddSum += $0
        }
    }
    
    return (evenSum, oddSum)
}

Если что-то будет не понятно, спрашивайте.


#3

Спасибо )Можете пояснить как понимать строку : Set(array.compactMap { $0 }).forEach ? C таким методом не сталкивалась еще (новичок)


#4

array.compactMap { $0 } - убирает из массива все nil значения
Set() - убирает все повторяющиеся элементы
ну а дальше просто проходимся по оставшимся элементам и суммируем


#5

Поняла .большое спасибо)