2016-08-10 16 views
6

Tôi có đoạn code sau swit, và tôi không thể quản lý để làm cho nó biên dịchThêm hai trở ngại đối với một var giao thức

public protocol A {} 
public protocol A2 {} 

public protocol B { 
    var props: A { get } 
} 

public protocol C : B { 
    var props: A2 { get } 
} 


struct D : A,A2 { 
} 


struct Yo : C { 
    var props: D 
} 

Những gì tôi đang cố gắng làm là thêm hai chế loại vào var "props" cả hai: A là một phần của giao thức BA2 như một phần của giao thức C.

Khi tôi cố gắng thực hiện những giao thức trong struct C trình biên dịch không thấy rằng là hợp lệ

+2

'A' và 'A2' không liên quan. 'C' là' B' (thừa kế), nếu 'C.props' trả về một kiểu khác, nó không thể được coi là' B' nữa. Vì vậy, nó hoặc là 'C' không nên là một' B' để bắt đầu với hoặc kiểu trả về của 'props' cần phải giống như' Any'. Sẽ được tốt đẹp giải thích những gì bạn thực sự muốn thực hiện. –

Trả lời

0

Nếu tôi hiểu đúng bạn cần var props từ struct Yo để phù hợp để hai giao thức.

Bạn chỉ có thể làm điều này với:

public protocol A {} 
public protocol A2 {} 

struct D : A,A2 { 
} 

struct Yo { 
    var props: D 
} 

Tôi không thấy lý do tại sao bạn sẽ cần giao thức C và B, khi họ thêm khó khăn để tái cấu trúc Yo và không var đạo cụ

Các vấn đề liên quan