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