相关疑难解决方法(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 - 如何定义引用自身的结构类型?

我正在尝试编写一个泛型interpolate方法,该方法适用于任何具有两种方法的类型,a *和a +,如下所示:

trait Container {
  type V = {
    def *(t: Double): V
    def +(v: V): V
  }

  def interpolate(t: Double, a: V, b: V): V = a * (1.0 - t) + b * t
}
Run Code Online (Sandbox Code Playgroud)

这不起作用(在Scala 2.8.0.RC7上),我收到以下错误消息:

<console>:8: error: recursive method + needs result type
           def +(v: V): V
                        ^
<console>:7: error: recursive method * needs result type
           def *(t: Double): V
                             ^
Run Code Online (Sandbox Code Playgroud)

如何正确指定结构类型?(或者有更好的方法吗?)

scala structural-typing

8
推荐指数
1
解决办法
871
查看次数