gpt4 book ai didi

ios - Swift 2 中数组的扩展

转载 作者:行者123 更新时间:2023-11-28 12:57:54 26 4
gpt4 key购买 nike

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)

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

array.sort(){}

但是返回错误为

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)

当然你会得到与内置的相同的结果map() 方法:

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

关于ios - Swift 2 中数组的扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com