这个Scala代码是否正确?

时间:2011-02-14 10:36:40

标签: scala scala-2.8

为什么此代码会使Scala 2.8.1编译器崩溃?

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

是编译器错误吗?

无论如何它是一个合法的Scala代码? (我想要一个具有匿名类类型的对象数组)

更新

我想要的是:

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

但无需定义独立X

2 个答案:

答案 0 :(得分:8)

编译器崩溃总是错误。但是你为什么要在 type 声明中设置x等于1?

你可能想要其中一个:

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

(并且编译器对这两种方法都很满意。)

答案 1 :(得分:0)

对我来说它没有崩溃(Scala 2.8),所以很可能是一个bug。