在Scala 2.9.1中,我遇到了以下行为:
编译器抱怨
如果在函数定义内部定义case类后再定义case类的伴生对象,似乎是不允许的。这是编译器的bug还是有意为之?如果是后者,为什么要这样做呢?
class Foo {
case class X()
object X // this compiles
def bar() {
object Y // this compiles
case class Y()
case class Z()
object Z // won't compile (see below)
}
}
编译器抱怨
Object Z
:
错误:Z已经定义为(编译器生成的)case类伴生对象Z。如果在函数定义内部定义case类后再定义case类的伴生对象,似乎是不允许的。这是编译器的bug还是有意为之?如果是后者,为什么要这样做呢?