Создание расширения для фильтрации 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! })
    }
}

(не компилируется!)

Ответы на вопрос(6)

Ваш ответ на вопрос