静态成员不能被用在协议元类型斯威夫特
问题描述:
我试图创建一个协议类型我有一个封闭,但我发现了以下错误静态成员不能被用在协议元类型斯威夫特
静态成员“menuItemSorter”不能用在协议元模型'MenuItem.Protocol'
这是我试图在操场上运行的代码缩减版本。
protocol MenuItem {
var order: Int {get}
}
extension MenuItem {
static var menuItemSorter: (MenuItem, MenuItem) -> Bool {
return { $0.order < $1.order }
}
}
class BigItem : MenuItem {
var order: Int = 1
}
let bigItems = [BigItem(), BigItem()]
let sorter = MenuItem.menuItemSorter
我希望能够对菜单项类/静态无功法,可以排序的菜单项,什么是做到这一点的最好方法是什么?
的可能的复制[斯威夫特:提供一个协议扩展默认的协议实现(http://stackoverflow.com/questions/35043292/swift -providing-a-default-protocol-implementation-in-a-protocol-extension) – Hamish
你的特定配置可能是安全的,但考虑'menuItemSorter'的实现可以自由地访问'MenuItem'的其他静态需求,这可能会没有默认实现。 – Hamish