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)
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)