Почему не работает код? Составляю код на коленке

swift

#1

func task1() {
/// Сумм уник эл масс опциональн значений.
/// 0, если Int в массиве нет.
/// Напр, для масс [20,10,20,nil] результат 30
func sumOfUnique(_ input: [Int?]) -> Int {
if input.isEmpty{
var filteredArr=input.drop(while: {$0==nil}); //удаляю nil элементы
let uniqueArr=Array(Set(filteredArr)); //оставляю только уникальные значения
var arrSum=uniqueArr.reduce(0, +); //сумма уникальных элементов
print (arrSum);
}
else {print (“null mass”)};
}
task1()


#2

Тут есть кнопочка для форматирования кода, очень облегчает читаемость вашего кода.
По вашему коду сплошная каша с логикой. Вы создаете метод внутри метода и там же возвращаете 0, но при этом дальше вложенного метода, пытаетесь использовать его параметр… Дальше, если параметр пустой, вы почему-то начинаете работу с ним…
В следующий раз попробуйте прочитать свой код на обычном разговорном языке, это поможет выявить нарушения в логике.


#3

Есть множество онлайн компиляторов, если у вас нет мака.


#4

Вы пытаетесь работать с входящим массивом внутри условия если он пустой…
Хотели наверное так:

if !input.isEmpty {
        var filteredArr = input.drop(while: {$0 == nil}) //удаляю nil элементы
        let uniqueArr = Array(Set(filteredArr)) //оставляю только уникальные значения
        var arrSum = uniqueArr.reduce(0, +)//сумма уникальных элементов
        print(arrSum)
}

Точки с запятой не нужны в свифте :wink: