У меня есть первый протоколSwift массив протоколов с associatedtype
protocol Prot1
{
}
И второе:
protocol Prot2
{
associatedtype P: Prot1
func doSomething(param: P)
}
Как я могу сделать массив с типом PROT2?
Я пробовал:
var myArray = [Prot2]()
Но это дает мне эту ошибку: протокол PROT2 может быть использован только в качестве общего ограничения, поскольку он имеет Самость или связанные с ними требования типа
Есть ли другой способ создать протокол шаблонов?
EDIT:
Извините, если я опаздываю, но я тестировал решения. Насколько я понимаю, тип стертого
AnyProt2<Prot1Type: Prot1>: Prot2
позволяет мне иметь массив с
[AnyProt2<Prot1Class>]
, но я просил массив, который может содержать все виды AnyProt2 что-то вроде:
[AnyProt2] or [AnyProt2<Prot1>]
Я попробовал второй, но это дает мне:
Using 'Prot1' as a concrete type conforming to protocol 'Prot1' is not supported.
В моем контексте Prot1 является Интервалом, а Prot2 - событием, поэтому я хотел иметь и массировать различные события, которые могут иметь разные виды интервалов. Я также хочу спросить, возможно ли сделать Prot1 для расширения Equatable и подтвердить протокол в AnyProt2.
Любая помощь для обновления? – 4bottiglie