我使用Swift遇到了一个奇怪的错误,但我似乎无法找到问题.我认为不应该抛出错误,我已经在操场上用下面的代码验证了这个问题.
protocol Sortable {
}
protocol ItemA: Sortable {
}
func sortItems<T: Sortable>(items: [T]) -> [T] {
// do the sorting here
return items
}
let list: [ItemA] = []
sortItems(items: list)
Run Code Online (Sandbox Code Playgroud)
您不能传递从当前 Swift 版本 (4.1) 中的约束协议继承的另一个协议。
如果你制作ItemAa struct、 aclass或 an enum,它就会起作用。
或者
如果您将更改您的sortItems实现以简单地Sortable作为这样的参数,那么您可以使用继承自 的另一个协议Sortable,但您将丢失有关类型的信息。
func sortItems(items: [Sortable]) -> [Sortable] {
// do the sorting here
return items
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到有关此问题的更多信息。
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |