Tôi đang cố gắng áp dụng một phần mở rộng giao thức hạn chế đến một struct (Swift 2.0) và nhận được lỗi biên dịch sau:phần mở rộng Nghị định thư về Struct nguyên nhân biên dịch lỗi 'Tự' chế để loại phi giao thức
type 'Self' constrained to non-protocol type '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()
Tôi có thể sửa lỗi này bằng cách thay đổi struct Foo
thành class Foo
nhưng tôi không hiểu tại sao tính năng này hoạt động. Tại sao tôi không thể làm một giao thức ràng buộc where Self:
một cấu trúc?
Vâng, đó là gây phiền nhiễu sau đó. Cảm ơn câu trả lời! – Benjohn