У меня есть быстрый вопрос, который меня немного смущает. Я сделал простую среднюю функцию, которая принимает массив необязательных Интов. Я проверяю, чтобы убедиться, что массив не содержит значения nil, но когда я использую сокращение, я должен принудительно развернуть один из двух элементов в закрытии. Почему это, что я только силой разворачивать второй (в моем случае $ 1!)Unwrapping опционально внутри крышки с использованием уменьшения
func average2(array: [Int?]) -> Double? {
let N = Double(array.count)
guard N > 0 && !array.contains({$0 == nil}) else {
return nil
}
let sum = Double(array.reduce(0) {$0+$1!})
let average = sum/N
return average
}
Я знаю, что это просто, но я хотел бы понять это правильно.
Так что есть простой способ развернуть его без f orce разворачивание? Конечно, я мог бы сделать цикл for, но я просто тренируюсь с использованием более функциональных методов. –
Большое спасибо. Раньше я не использовал flatmap. Я буду смотреть в него. –