4

也许我遗漏了一些明显的东西,但是:

包.scala

package heptic

package object proj {
  case class Jesus(axes: Int)
  def foo: Jesus = Jesus(44)
}

给出编译错误:

found   : heptic.proj.Jesus
required: heptic.proj.package.Jesus
def foo: Jesus = Jesus(44)
                      ^

这似乎没有多大意义(尤其是当类型推断使编译器崩溃时(最新,2.10.1))

4

3 回答 3

3

sbt clean对于此类错误。

有另一个类被Jesus编译并且没有被删除。我猜你已经Jesuspackageto搬到了package object并得到了他们两个。

于 2013-05-08T17:17:47.770 回答
0

在包中声明案例类,但不在包对象中:

package heptic

package object proj {
  def foo: Jesus = Jesus(44)
}

package proj {
  case class Jesus(axes: Int)
}
于 2013-05-08T16:40:36.693 回答
0

我为了使其正常工作,我相信您需要将此代码放入文件package.scala夹结构“/heptic/proj”(在您的源文件夹下)下调用的文件中。需要调用 scala 文件,package.scala并且它需要位于匹配的包文件夹结构下,才能真正表现得像一个包对象。

于 2013-05-08T16:24:51.447 回答