Ich habe ein Protokoll, das ich so definiert habe:
protocol MyProtocol {
...
}
Ich habe auch eine generische Struktur:
struct MyStruct <T> {
...
}
Endlich habe ich eine generische Funktion:
func myFunc <T> (s: MyStruct<T>) -> T? {
...
}
Ich möchte innerhalb der Funktion testen, ob der Typ T MyProtocol entspricht. Im Wesentlichen möchte ich in der Lage sein (~ Pseudocode):
let conforms = T.self is MyProtocol
Dies führt jedoch zu einem Compilerfehler:
error: cannot downcast from 'T.Type' to non-@objc protocol type 'MyProtocol'
let conforms = T.self is MyProtocol
~~~~~~ ^ ~~~~~~~~~~
Ich habe auch Variationen ausprobiert, wie T.self is MyProtocol.self
, T is MyProtocol
und die Verwendung ==
statt is
. Bisher bin ich nirgendwo hingekommen. Irgendwelche Ideen?