请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

如何定义一个泛型函数,求和

如题,我想定义一个泛型函数,用于求和,我试图用以下代码,但是会报错,请问应该怎么写

fun <U: Number> sumOf(vararg nums: U):U{
var sum:U = 0.0 as U
nums.forEach {
sum = sum + it
}
return sum

}

正在回答

1回答

因为Numer不一定有plus函数,所以不能定定义这样的函数。

0 回复 有任何疑惑可以回复我~
  • 提问者 turboburst #1
    所以老师的意思是,利用泛型,是无法定义一个求数字和的函数的,是这样吗?
    回复 有任何疑惑可以回复我~ 2020-12-09 11:02:45
  • bennyhuo 回复 提问者 turboburst #2
    至少用 Number 类型是不可以的。你看官方提供的 List 的 sum 函数,也是专门为 Int 和 Double 提供了不同的版本的。
    回复 有任何疑惑可以回复我~ 2020-12-09 15:06:25
  • bennyhuo 回复 提问者 turboburst #3
    实际上,如果 Kotlin 泛型约束支持指定函数约束,那么我们的泛型参数的上限就可以设定为有 plus 函数的类型,不过,它不支持。C# 是支持的,你可以去体验一下 C# 的泛型。
    回复 有任何疑惑可以回复我~ 2020-12-09 15:07:21
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信