我希望我的函数计算Double类型数组的平均值。这个数组叫做“votes”。现在,我有10个数字。
当我调用average function
来获取数组投票的平均值时,它不起作用。
下面是我的代码:
var votes = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
func average(nums: Double...) -> Double {
var total = 0.0
for vote in votes {
total += vote
}
let votesTotal = Double(votes.count)
var average = total/votesTotal
return average
}
average[votes]
我如何调用平均值来得到平均值?
7条答案
按热度按时间628mspwn1#
您应该使用
reduce
方法对序列元素求和,如下所示:Xcode Xcode 10.2+ · Swift 5以上版本
如果你需要处理
Decimal
类型的总和,它已经被AdditiveArithmetic
协议扩展方法覆盖了,所以你只需要实现平均值:如果你需要对自定义结构的某个属性求和,我们可以扩展
Sequence
并创建一个方法,该方法以KeyPath作为参数来计算其总和:使用方法:
并扩展集合以计算其平均值:
使用方法:
41ik7eoe2#
你的代码中有一些错误:
w6lpcovy3#
一个小的一行程序,使用老式的KVC在Swift中翻译:
你也可以有总和:
更多关于这颗被遗忘的宝石:https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/KeyValueCoding/CollectionOperators.html
of1yzvn44#
如果需要的话,使用过滤器进行简单的平均(Swift 4.2):
yftpprvb5#
我有一组在更新函数中创建的信号,为了获得移动平均值,我使用此函数计算由移动平均值周期定义的窗口内的平均值。由于我的目标是组装一组包含平均值的新信号,因此我将丢弃原始信号集的信号。对于那些希望在更新函数中使用移动平均值的人来说,这是一个很好的解决方案,例如在SKScene中。
pgky5nke6#
Swift 4.2
对于纯粹的优雅简单,我爱:
当我们在这里的时候,其他不错的基于
reduce
的操作:图片来源:Adrian Houdart的MathKit,基本上没有变化。
我在The Swift Programming Language中找到了以下内容:
下面的示例计算任意长度的数字列表的算术平均值(也称为平均值):
1sbrub3j7#
将这些扩展添加到Array将计算Int和FloatingPoint值的平均值: