I'm trying to create a closure for a protocol type I have, but I'm getting the following error
Static member 'menuItemSorter' cannot be used on protocol metatype 'MenuItem.Protocol'
Here's a reduced version of my code that I'm trying to run in a playground.
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
I'd like to be able to have a class/static var method on MenuItem that can sort menuItems, what's the best way to do this?
menuItemSorteris free to access other static requirements ofMenuItem, which may not have default implementations. - Hamish