2011-02-14 116 views
1

为什么这段代码崩溃了Scala 2.8.1编译器?这个Scala代码是否正确?

val a = new Array[{ var x = 1 }](3) 

它是一个编译器错误吗?

无论如何,这是一个合法的Scala代码? (我想用匿名类类型对象的数组)

更新:

我想是这样的:

class X { var x = 1} 
val a = new Array[X](3) 

但不必定义独立的X

+0

如果我不允许引用它,我到底该如何键入类型检查?它甚至没有我可以声明结构类型来匹配的方法。 – 2011-02-14 11:39:29

+1

我绝不是专家,但由于编译器崩溃,我会说这是一个错误。 – gruenewa 2011-02-14 12:08:18

回答

8

编译崩溃总是错误。但你为什么试图在类型声明中设置x等于1?

你可能想其中的一个:

val a = new Array[{var x: Int}](3) 
val a = Array.fill(3)(new { var x = 1 }) 

(和编译器是幸福与任一)。

0

它不会为我(Scala 2.8)崩溃,所以它可能是一个错误。