Swift 2 中数组的扩展

Extension of an Array in Swift 2

extension Array{

    func addBonus(addFunc:([Int])->([Int])) ->[Int]{
        return addFunc(self)//error in this line

    }
}
var empSalArray:[Int] = [2500,1300,1244,3412,5432,1223]
var empBonusAddedArry = empSalArray.addBonus{ arr -> [Int] in

    var temp = [Int]()
    for val in arr{
        temp.append(val+1000)
    }
    return temp
}
print(empBonusAddedArry)

想要创建数组的扩展..以便我可以调用 sort

array.sort(){}

然而 returns 错误为

Cannot convert value of type Array to expected argument type [Int].

扩展方法中的

addFunc(self) 无法编译,因为数组不需要是 Int 元素的数组。

这种情况下,很容易修复:

extension Array {

    func addBonus(addFunc:([Element])->([Element])) ->[Element]{
        return addFunc(self)
    }
}

其中 Element 是数组的通用占位符类型。

或者,您可以考虑定义扩展方法 作为

extension Array{
    func addBonus(addFunc:(Element)-> Element) ->[Element]{
        return self.map(addFunc)
    }
}

其中数组 元素 的转换函数而不是 传递整个数组:

var empSalArray:[Int] = [2500,1300,1244,3412,5432,1223]
var empBonusAddedArry = empSalArray.addBonus { amount in amount + 1000 }
print(empBonusAddedArry)

当然你会得到与 built-in 相同的结果 map()方法:

var empSalArray:[Int] = [2500,1300,1244,3412,5432,1223]
var empBonusAddedArry = empSalArray.map { amount in amount + 1000 }
print(empBonusAddedArry)