Рассмотрим следующий протокол со связанным типом.
protocol P1 {
associatedtype X
}
Затем я создаю дочерний протокол, который ограничивает связанный тип: Int
.
protocol P2: P1 where X == Int {
}
А затем попытайтесь использовать его, я все еще получаю ошибку
class UsesP2 {
//Protocol 'P2' can only be used as a generic constraint
// because it has Self or associated type requirements
var p2: P2!
}
Протокол 'P2' может использоваться только в качестве общего ограничения, потому что он имеет
Собственные или связанные с ними требования типа
Я думал, что на этом этапе связанный тип был удовлетворен, typealias были неявно определены, и что P2
может быть когда-либо использован только с Int
. P1
даже не конвертируется в P2
.