问题描述
我是 Scala 的新手,并尝试使用泛型类型参数编写加法程序,如下所示
Hi I am new to scala and trying to write addition program in with generic type parameter as shown below
object GenericTest extends Application {
def func1[A](x:A,y:A) :A = x+y
println(func1(3,4))
}
但这不起作用.我犯了什么错误.
But this does not work .What mistake i am making .
推荐答案
A
在这种情况下可以是任何类型.x + y
表示 x.+(y)
,它只会在以下情况下编译 a) A
类型有一个方法 +
,或 b) 类型 A
可以隐式转换为具有方法 +
的类型.
A
could be any type in this case. x + y
means x.+(y)
, which would only compile if either a) the type A
had a method +
, or b) the type A
was implicitly convertible to a type with a method +
.
scala.Numeric
类型提供了编写抽象数字系统的代码的能力——它可以用 Double、Int 甚至你自己的奇异数字系统调用,例如复数.
The type scala.Numeric
provides the ability to write code that abstracts over the numeric system -- it could be called with Double, Int, or even your own exotic numeric system, such as complex numbers.
您可以向 Numeric[A]
类型的方法添加隐式参数.
You can add an implicit parameter to your method of type Numeric[A]
.
object GenericTest extends Application {
def func1[A](x: A, y: A)(implicit n: Numeric[A]): A = x + y
}
在 Scala 2.8 中,这可以缩短:
In Scala 2.8, this can be shortened:
object GenericTest extends Application {
def func1[A: Numeric](x: A, y: A): A = x + y
}
这篇关于在 Scala 中添加泛型类型参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!