Tôi có giao thức sau đây và một lớp học phù hợp với nó:Không thể tạo một mảng của các loại phù hợp với một Nghị định thư trong Swift
protocol Foo{
typealias BazType
func bar(x:BazType) ->BazType
}
class Thing: Foo {
func bar(x: Int) -> Int {
return x.successor()
}
}
Khi tôi cố gắng tạo ra một mảng của foos, tôi nhận được một lỗi lẻ:
var foos: Array<Foo> = [Thing()]
Protocol Foo can only be used as a generic constraint because it has Self or associated type requirements.
OK, vì vậy nó chỉ có thể được sử dụng nếu nó có một yêu cầu loại liên quan (mà nó), nhưng đối với một số lý do đây là một lỗi ?? WTF ?!
Tôi không chắc tôi hoàn toàn hiểu những gì các trình biên dịch đang cố gắng cho tôi biết ...
thể trùng lặp của (http://stackoverflow.com/questions/26267597/cannot-assign-class-instance-to -its-protocol-type) – Antonio