Я использую Swift 5. У меня есть протокол:
protocol Pipe {
associatedtype T
func await() -> Void
func yield( to: Any, with listener: Selector ) -> Void
}
И я хотел бы сослаться на экземпляр этого протокола где-нибудь в коде. То есть я хочу foo: или переменную generi c типа T, реализующую Pipe. В этой документации: https://docs.swift.org/swift-book/ReferenceManual/GenericParametersAndArguments.html
Я попытался написать:
var imageSource: <Pipe T>
и любую перестановку указанных символов, ie imageSource: но синтаксис неверен все случаи.
Фактически, T соответствует двум протоколам, Renderable и Pipe, поэтому я действительно хочу:
var imageSource: <Pipe, Renderable T>
По синтаксису это gibberi sh, но семантически это не необычный вариант использования.
__________________ EDIT после того, как были даны два ответа __________
Я попытался упростить протокол Pipe
для этого сообщения, но теперь понимаю, что слишком упростил его. В моей кодовой базе это
protocol Pipe {
associatedtype T
func await() -> Void
func yield( to: Any, with listener: Selector ) -> Void
func batch() -> [T]
}
Вот почему там стоит буква T. Но это не критично, я могу сбросить batch() -> [T]
, если смогу написать то, что хочу выше.