【发布时间】:2016-09-29 16:44:28
【问题描述】:
我有一个函数,它接受其他几个函数作为参数:
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 参数就可以正常工作
【问题讨论】:
-
()与Void相同。应该在 Swift 书中,搜索“empty tuple”。