Я пытаюсь применить ограниченное расширение протокола к структуре (Swift 2.0) и получить следующую ошибку компилятора:
тип "Я", ограниченный не-протокольным типом "Foo"
struct Foo: MyProtocol {
let myVar: String
init(myVar: String) {
self.myVar = myVar
}
}
protocol MyProtocol {
func bar()
}
extension MyProtocol where Self: Foo {
func bar() {
print(myVar)
}
}
let foo = Foo(myVar: "Hello, Protocol")
foo.bar()
Я могу исправить эту ошибку, изменив struct Foo
на class Foo
, но я не понимаю, почему это работает. Почему я не могу сделать where Self:
ограниченный протокол struct?