数组 – 在swift中使用for循环汇总数组的问题
发布时间:2020-12-14 02:23:38 所属栏目:百科 来源:网络整理
导读:我正在尝试迭代一个数组并使用泛型来总结所有值,如下所示: func reduceDaArray T,U(a: [T],startingValue: U,summed: (U,T) - U) - U { var sum = 0 for number in a { sum = sum + number } return sum}reduceDaArray([2,3,4,5,6],2,+) //(22) 它给了我以
我正在尝试迭代一个数组并使用泛型来总结所有值,如下所示:
func reduceDaArray <T,U>(a: [T],startingValue: U,summed: (U,T) -> U) -> U { var sum = 0 for number in a { sum = sum + number } return sum } reduceDaArray([2,3,4,5,6],2,+) //(22) 它给了我以下错误: 关于行和=总和数,二进制运算符”不能应用于’Int’和’A’类型的操作数 和 关于行返还总和,Int不能转换为’U’ 我知道这可以通过reduce方法更好地完成,但是我想使用迭代完成任务来实现这个实例.为什么会出现这些错误?我从未明确表示T是Int.
在reduceDaArray()函数中, var sum = 0 声明一个整数而不是使用给定的startingValue. sum = sum + number 尝试将泛型数组元素添加到该整数,而不是使用 所以你可能意味着什么 func reduceDaArray <T,T) -> U) -> U { var sum = startingValue for number in a { sum = summed(sum,number) } return sum } 编译和按预期工作: let x = reduceDaArray([2,+) println(x) // 22 let y = reduceDaArray([1.1,2.2],3.3,*) println(y) // 7.986 let z = reduceDaArray(["bar","baz"],"foo") { $0 + "-" + $1 } println(z) // foo-bar-baz (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |