2010-08-12 41 views
5

有些人声称,如果使用scalac的-Yrecursion选项,scala能够处理递归结构类型。不过我的简约例子并不编译:scala中不再支持递归结构类型吗?

type Num = { 
    def +(n: Num): Num 
} 

编译产量:

$ scalac -version 
Scala compiler version 2.8.0.final -- Copyright 2002-2010, LAMP/EPFL 
$ scalac -Yrecursion 100 Num.scala 
Num.scala:3: error: recursive method + needs result type 
def +(n: Num): Num 
      ^
one error found 

这篇变化?这个例子不应该编译?

+0

另请参阅http://stackoverflow.com/questions/3201577/scala-how-to-define-a-structural-type-that-refers-to-itself – Jesper 2010-08-12 11:54:35

+0

感谢您的参考。看起来这个问题一再提出。 – gruenewa 2010-08-13 17:09:14

回答

8

从未支持递归结构类型。 -Yrecursion选项做一些与结构类型无关的事情。

+0

感谢您的回答,当然还有Scala IDE的杰出工作。 – gruenewa 2010-08-12 10:26:49