Я пытаюсь написать расширение для 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! })
}
}
(он не компилируется!)