【发布时间】:2015-11-06 12:57:08
【问题描述】:
我有一个特质定义:
trait T {
def name: String
}
我可以创建一个像这样的对象:
val o = new {
val name: String = "anonymous"
} with T
但我无法通过以下方式创建对象:
val o = new {
def name: String = "anonymous"
} with T
编译器说';'或在} with T 行中预期换行。唯一不同的是我在第二个实现中使用了def 而不是val。
我知道可以在匿名对象中定义方法,但是为什么我不能在这里这样使用呢?
【问题讨论】:
-
见this。
-
我得到的编译器错误是“错误:在早期对象初始化部分只允许具体的字段定义”