let array = [ [11,2,4],[4,5,6],[10,8,-12] ]
我想得到的是对角线的总和:
>作为firstDiagnal:11 5(-12)= 4
>作为secondDiagnal:4 5 10 = 19
我可以使用标准的for-in循环来实现它:
var firstDiagnal = 0var secondDiagnal = 0for i in 0..<array.count { firstDiagnal += array[i][i] secondDiagnal += array[i][array[i].count - 1 - i]}print(firstDiagnal)print(secondDiagnal)
但是,如果我们尝试使用高阶函数会是什么呢?如地图和减少?
要获得第一笔总和,您需要第i行的第i个元素:let firstDiag = array.enumerated().map { [let secondDiag = array.enumerated().map { .reversed()[] }.reduce(0,+)] }.reduce(0,+)
要获得第二笔金额,您需要相同的东西,但列相反:
总结以上是内存溢出为你收集整理的数组 – 如何使用高阶函数得到对角线的总和?全部内容,希望文章能够帮你解决数组 – 如何使用高阶函数得到对角线的总和?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)