2010-08-12 38 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