У меня есть следующий протокол и соответствующий ему класс:
protocol Foo{
typealias BazType
func bar(x:BazType) ->BazType
}
class Thing: Foo {
func bar(x: Int) -> Int {
return x.successor()
}
}
Когда я пытаюсь создать массив foos, я получаю странную ошибку:
var foos: Array<Foo> = [Thing()]
Протокол Foo можно использовать только в качестве общего ограничения, поскольку он имеет требования типа Self или связанные с ним.
Хорошо, поэтому его можно использовать только в том случае, если у него есть требование связанного типа (что он делает), но по какой-то причине это ошибка ?? Какого черта ?!
Я не уверен, что полностью понимаю, что компилятор пытается мне сказать ...