У меня есть протокол, который я определил так:
protocol MyProtocol {
...
}
У меня также есть общая структура:
struct MyStruct <T> {
...
}
Наконец, у меня есть общая функция:
func myFunc <T> (s: MyStruct<T>) -> T? {
...
}
Я бы хотел проверить внутри функции, если тип T соответствует MyProtocol. По существу, я хотел бы иметь возможность делать (~ псевдокод):
let conforms = T.self is MyProtocol
Но это вызывает ошибку компилятора:
error: cannot downcast from 'T.Type' to [email protected] protocol type 'MyProtocol'
let conforms = T.self is MyProtocol
~~~~~~ ^ ~~~~~~~~~~
Я также пробовал варианты, такие как T.self is MyProtocol.self
, T is MyProtocol
и используя ==
вместо is
. До сих пор я никуда не денусь. Любые идеи?