Android 通用数字加法函数
我想用kotlin语言创建一个通用函数,该函数将添加所有类型的数字,即Double、Float、Long、Int、Byte、Char和Short。因此,我创建了一个函数:Android 通用数字加法函数,android,generics,kotlin,Android,Generics,Kotlin,我想用kotlin语言创建一个通用函数,该函数将添加所有类型的数字,即Double、Float、Long、Int、Byte、Char和Short。因此,我创建了一个函数: fun <T : Number> add (a: T, b: T) = a + b fun add(a:T,b:T)=a+b 但是Android Studio IDE在+符号上抛出编译时错误为Number类没有plus方法。为什么呢?请有人在kotlin中提供通用函数的解决方案,而不使用if else或whe
fun <T : Number> add (a: T, b: T) = a + b
fun add(a:T,b:T)=a+b
但是Android Studio IDE在
+
符号上抛出编译时错误为Number
类没有plus
方法。为什么呢?请有人在kotlin
中提供通用函数的解决方案,而不使用if else
或when
语句。除非您检查它们的类型和强制转换,否则您的函数只知道它们都是数字。没有Number.plus(Number)
函数,因此无法按原样添加它们。您可以将它们转换为双精度,然后添加它们,因为有一个Number.toDouble()
函数。类型不需要具体化
fun <T : Number> add (a: T, b: T) = a.toDouble() + b.toDouble()
fun add(a:T,b:T)=a.toDouble()+b.toDouble()
除非检查它们的类型和强制转换,否则函数只知道它们都是数字。没有Number.plus(Number)
函数,因此无法按原样添加它们。您可以将它们转换为双精度,然后添加它们,因为有一个Number.toDouble()
函数。类型不需要具体化
fun <T : Number> add (a: T, b: T) = a.toDouble() + b.toDouble()
fun add(a:T,b:T)=a.toDouble()+b.toDouble()
如果参数a
和b
是Int,那么我为什么要将它们转换为double呢?您说过在使用语句时不需要。如果要将它们保留为Int,则需要一个when
语句来分别处理特定情况(它们都是Int)。如果paramsa
和b
都是Int,那么我为什么要将它们转换为double?您说过不需要when
语句。如果希望将它们保留为int,则需要一个when
语句来分别处理特定情况(它们都是int)。