在Scala中添加泛型类型参数

时间:2010-01-19 19:28:36

标签: scala

您好我是scala的新手,并尝试使用泛型类型参数编写附加程序,如下所示

object GenericTest extends Application {
  def func1[A](x:A,y:A) :A = x+y    
    println(func1(3,4))
}

但这不起作用。我犯的是什么错误。

2 个答案:

答案 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)