为什么此代码会使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
答案 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。