tôi có mã nhanh chóng:Swift giao thức thừa kế
import Foundation
protocol ParentProtocol {
//stuff
}
protocol ChildProtocol:ParentProtocol {
//additional stuff
}
protocol FooProtocol {
var variable:ParentProtocol? { get }
}
class Foo:FooProtocol {
var variable:ChildProtocol?
}
Tôi đã có trình biên dịch báo lỗi: Type 'Foo' does not conform to protocol 'FooProtocol'
tôi biết, rằng theo FooProtocol
, loại biến phải ParentProtocol
loại. Mặt khác, ChildProtocol
được kế thừa từ ParentProtocol
, do đó, nó cũng là ParentProtocol
Có giải pháp nào để sử dụng kế thừa giao thức theo cách đó không?
@ShadowOf vâng, cảm ơn. Giải pháp với các kiểu liên kết hoạt động như mong đợi: http://stackoverflow.com/a/38008288/824285 – somedev
Liên quan: [Làm thế nào tôi có thể tạo một hàm có kiểu trả về lớp con phù hợp với một giao thức, trong đó một lớp cha được định nghĩa là kiểu trả về ?] (http://stackoverflow.com/questions/35094967/swift-how-can-i-make-a-function-with-a-subclass-return-type-conform-to-a-protoc) – Hamish
Cũng liên quan (sự phù hợp và thừa kế của các kiểu dữ liệu): [Giao thức không phù hợp với chính nó?] (http://stackoverflow.com/questions/33112559/protocol-doesnt-conform-to-itself), trích dẫn MartinR: s bình luận, _ " Ngay cả với 'giao thức P: Q {}', 'P' không phù hợp với' Q' "_. – dfri