我有一个函数,它将几个其他函数作为参数:
class Iterator {
func iterateItems(itemArray: [Items], removeItem: (Items) -> Void, addItem: (inout Items) -> Void, calculateEfficiency: () -> Void) -> [Items] {
// function body
}
}
我在它的类'子类中称它为:
class WPCalculator: Iterator {
func removeWeaponItem(item: WeaponItems) { ... }
func addWeaponItem(item: inout WeaponItems) { ... }
func calcWeaponDamage() { ... }
func iterateWPItems() {
return iterateItems(itemArray: WeaponItems.weaponItems, removeItem: removeWeaponItem as! (Items) -> Void, addItem: addWeaponItem as! (inout Items) -> Void, calculateEfficiency: calcWeaponDemage)
}
}
WeaponItems
类也是Items
类的子类:
class WeaponItems: Items { ... }
Xcode在addWeaponItem
上发出警告:
从
(inout WeaponItems) -> ()
投射到不相关的类型(inout Items) -> Void
始终失败
我无法理解-> ()
返回类型,显然它不是我的函数所做的,其他函数作为参数传递而没有inout参数只是工作正常
答案 0 :(得分:0)
答案 1 :(得分:0)
您的函数iterateItems
removeItem
addItem
calculateEfficiency
参数是函数类型。所以你必须在调用函数时使用函数名作为参数。
iterateItems(itemArray: WeaponItems.weaponItems, removeItem: removeWeaponItem, addItem: addWeaponItem, calculateEfficiency: calcWeaponDamage)