2017-04-13 23 views
2

我在Swift 3.1中遇到了這個奇怪的編譯器限制,在操場上進行了測試。任何解決方案用作具體類型的非通用協議不符合自己

enter image description here

似乎是一個編譯器錯誤,建議? 謝謝:)

+3

是的,[協議不符合自己](http://stackoverflow.com/q/33112559/2976878) - 不能使用Protocol1作爲符合Protocol1的類型。這不是一個錯誤,而是設計。 – Hamish

+0

感謝您的回答。使不合適的權利?這是一個無稽之談。 – acecilia

+0

它確實有道理。考慮如果你對'Protocol1'有一個'static'協議要求 - 如果我有一個'func foo (_:T.Type){}',我可以訪問'T'上的靜態協議要求。你不能訪問協議類型的靜態需求,只能在具體類型上訪問 - 因此,協議不符合自己的要求。但我同意這種解決方法(類型erasers)非常平凡 - 希望在未來的語言版本中,Swift將支持* some *語言功能來減輕這種負擔。 – Hamish

回答

1

是的,作爲具體類型使用的協議可能不符合自己。這由Hamish here解釋,還有here有一個來自Swift項目的關於它的JIRA解決的錯誤報告。這兩個鏈接都包含代碼,以便您瞭解問題。

相關問題