您好我是scala的新手,并尝试使用泛型类型参数编写附加程序,如下所示
object GenericTest extends Application {
def func1[A](x:A,y:A) :A = x+y
println(func1(3,4))
}
但这不起作用。我犯的是什么错误。
答案 0 :(得分:4)
A
可以是任何类型。 x + y
表示x.+(y)
,只有在a)类型A
具有方法+
或b)类型A
可隐式转换为方法为+
的类型。
类型scala.Numeric
提供了编写在数字系统上抽象的代码的能力 - 可以使用Double,Int甚至您自己的奇特数字系统调用它,例如复数。
您可以为类型为Numeric[A]
的方法添加隐式参数。
object GenericTest extends Application {
def func1[A](x: A, y: A)(implicit n: Numeric[A]): A = x + y
}
在Scala 2.8中,可以缩短它:
object GenericTest extends Application {
def func1[A: Numeric](x: A, y: A): A = x + y
}
答案 1 :(得分:0)