Расширение универсального типа с новым универсальным типом в Swift - PullRequest
1 голос
/ 02 ноября 2019

Я хотел бы расширить универсальный тип Array<Element> с ограничением на Element, которое зависит от другого универсального типа, такого как Element == Optional<Wrapped>.

В случае, если Element неВ общем, это просто:

extension Array where Element == String {
    func merge() -> String { ... }
}

Я попробовал следующее, но компилятор не принимает его.

extension Array<Wrapped> where Element == Optional<Wrapped> {
    func merge() -> Optional<Wrapped> { ... }
}

Какой синтаксис я должен использовать в этом случае? Заранее спасибо!

1 Ответ

1 голос
/ 02 ноября 2019

Вместо метода можно установить ограничение :

extension Array {
    func merge<T>() -> T? where Element == T? {
        // ...
    }
}
...