Массив функций <Необязательно <T >> -> Необязательно <Массив <T >>

Вот что я пытаюсь сделать:

extension Array<Optional<T>> {   
  func unwrap() -> Optional<Array<T>> {
    let a = self.flatMap() { a in
      switch a {
      case Optional.Some(let x): return [x]
      case Optional.None: return []
      }
    }
    if a.count == self.count {
      return Optional.Some(a)
    } else {
      return Optional.None
    }   
  } 
}

Но это не компилируется с ошибкойUse of undeclared type T, Вот как я хочу использовать это:

let a = [Optional.Some(2), Optional.Some(3), Optional.Some(4)]
let b = [Optional.Some(1), Optional.None]
a.unwrap() // Optional[2, 3, 4]
b.unwrap() // nil

Как я могу обойти это? Или такой возможности нет в swift?

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

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