У мене є протокол, який я визначив так:
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 non-@objc protocol type 'MyProtocol'
let conforms = T.self is MyProtocol
~~~~~~ ^ ~~~~~~~~~~
Я також пробував варіанти, як T.self is MyProtocol.self
, T is MyProtocol
і використовуючи ==
замість is
. Поки що я нікуди не дійшов. Будь-які ідеї?