我想写一个方法来计算标准偏差与提供的数字。
这是它的样子:
fun calculateSD(numArray: List<Int>): Double {
var sum = 0.0
var standardDeviation = 0.0
for (num in numArray) {
sum += num
}
val mean = sum / numArray.size
for (num in numArray) {
standardDeviation += Math.pow(num - mean, 2.0)
}
val divider = numArray.size - 1
return Math.sqrt(standardDeviation / divider)
}
但是,我希望这也适用于Double,Float等列表。
所以它需要使用泛型:
fun <T>calculateSD(numArray: List<T>): Double {
var sum = 0.0
var standardDeviation = 0.0
for (num in numArray) {
sum += num
}
val mean = sum / numArray.size
for (num in numArray) {
standardDeviation += Math.pow(num - mean, 2.0)
}
val divider = numArray.size - 1
return Math.sqrt(standardDeviation / divider)
}
但是当我尝试这样做时,我得到了Android Studio IDE错误,它强调了'+ ='运算符和' - '运算符。
我怎样才能使它工作?
没有很好的方法可以按照你想象的方式对不同的数字类型进行泛化; qazxsw poi,qazxsw poi等只延伸qazxsw poi和Int
,两者都没有定义Double
。
但是,在您的特定用例中,您可以利用累加器变量始终为Number
的事实:
Comparable
FWIW,你可以摆脱显式循环:
operator plus
或者因此:
Double