我試圖創建一個協議類型我有一個封閉,但我發現了以下錯誤靜態成員不能被用在協議元類型斯威夫特
靜態成員「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