У меня есть следующий протокол и соответствующий ему класс:
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 может использоваться только как общее ограничение, поскольку он имеет Собственные или связанные типы.
ОК, поэтому его можно использовать, только если у него есть связанное требование типа (что он делает), но по какой-то причине это ошибка? WTF?!
Я не уверен, что полностью понимаю, что компилятор пытается мне сказать...