相关疑难解决方法(0)

Scala:如何定义"通用"函数参数?

我现在正在尝试学习Scala,在Haskell中有一些经验.对我来说奇怪的一件事是Scala中的所有函数参数都必须用类型注释 - 这是Haskell不需要的东西.为什么是这样?试着把它作为一个更具体的例子:add函数写成如下:

def add(x:Double, y:Double) = x + y
Run Code Online (Sandbox Code Playgroud)

但是,这只适用于双打(嗯,因为隐式类型转换,因此也可以工作).但是,如果要定义自己的类型来定义自己的+运算符,该怎么办?你会如何编写一个适用于定义+运算符的任何类型的add函数?

polymorphism haskell scala type-inference

51
推荐指数
2
解决办法
5万
查看次数

Scala:泛型类类型的约束

我是Scala的新手.

我想实现一个通用矩阵类"class Matrix [T]".对T的唯一约束应该是T应该实现"+"和"*"方法/函数.我该怎么做呢?

例如,我希望能够同时使用Int,Double和我自己定义的类型,例如Complex

我正在思考一些事情:

class Matrix[T <: MatrixElement[T]](data: Array[Array[T]]) {
   def *(that: Matrix) = ..// code that uses "+" and "*" on the elements
}
abstract class MatrixElement[T] {
    def +(that: T): T
    def *(that: T): T 
}
implicit object DoubleMatrixElement extends MatrixElement[Double]{
    def +(that: Double): Double = this + that
    def *(that: Double): Double = this * that 
}
implicit object ComplexMatrixElement extends MatrixElement[Complex]{
    def +(that: Complex): Complex = this + that
    def *(that: Complex): Complex = …
Run Code Online (Sandbox Code Playgroud)

generics scala scala-2.8

7
推荐指数
1
解决办法
2679
查看次数