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) // 22let y = reduceDaArray([1.1,2.2],3.3,*)println(y) // 7.986let z = reduceDaArray(["bar","baz"],"foo") { + "-" + }println(z) // foo-bar-baz总结
以上是内存溢出为你收集整理的数组 – 在swift中使用for循环汇总数组的问题全部内容,希望文章能够帮你解决数组 – 在swift中使用for循环汇总数组的问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)