采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
如题,我想定义一个泛型函数,用于求和,我试图用以下代码,但是会报错,请问应该怎么写
fun <U: Number> sumOf(vararg nums: U):U{ var sum:U = 0.0 as U nums.forEach { sum = sum + it } return sum
}
因为Numer不一定有plus函数,所以不能定定义这样的函数。
所以老师的意思是,利用泛型,是无法定义一个求数字和的函数的,是这样吗?
至少用 Number 类型是不可以的。你看官方提供的 List 的 sum 函数,也是专门为 Int 和 Double 提供了不同的版本的。
实际上,如果 Kotlin 泛型约束支持指定函数约束,那么我们的泛型参数的上限就可以设定为有 plus 函数的类型,不过,它不支持。C# 是支持的,你可以去体验一下 C# 的泛型。
登录后可查看更多问答,登录/注册
如果有一门语言可以取代Java,那么它一定是Kotlin。
1.5k 4
1.6k 1
419 1
257 20
1.4k 16