什么是返回类型“()”?

时间:2016-09-29 08:29:36

标签: ios swift

我有一个函数,它将几个其他函数作为参数:

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参数只是工作正常

2 个答案:

答案 0 :(得分:0)

我认为()Void

相同

出现警告是因为WeaponItemsItems不匹配

django REST framework

答案 1 :(得分:0)

您的函数iterateItems removeItem addItem calculateEfficiency参数是函数类型。所以你必须在调用函数时使用函数名作为参数。

像这样:

iterateItems(itemArray: WeaponItems.weaponItems, removeItem: removeWeaponItem, addItem: addWeaponItem, calculateEfficiency: calcWeaponDamage)