Создание расширения для фильтрации nils из массива в Swift
Я пытаюсь написать расширение для Array, которое позволит преобразовать массив необязательных T в массив необязательных T.
например это можно записать как свободную функцию, например:
func removeAllNils(array: [T?]) -> [T] {
return array
.filter({ $0 != nil }) // remove nils, still a [T?]
.map({ $0! }) // convert each element from a T? to a T
}
Но я не могу заставить это работать как расширение. Я пытаюсь сказать компилятору, что расширение применяется только к массивам необязательных значений. Это то, что я до сих пор:
extension Array {
func filterNils<U, T: Optional<U>>() -> [U] {
return filter({ $0 != nil }).map({ $0! })
}
}
(не компилируется!)