包对象中的类型

时间:2013-05-08 16:15:00

标签: scala compiler-errors

也许我错过了一些明显的东西,但是:

package.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))

3 个答案:

答案 0 :(得分:3)

sbt clean表示此类错误。

编译了另一个类Jesus但未删除。我猜您已将Jesuspackage移至package object并获得了两者。

答案 1 :(得分:0)

为了使这项工作正常,我相信您需要将此代码放入文件夹结构'/ heptic / proj'(源文件夹下)中名为package.scala的文件中。 scala文件需要被称为package.scala,它需要在匹配的包文件夹结构下才能真正表现得像包对象。

答案 2 :(得分:0)

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

package heptic

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

package proj {
  case class Jesus(axes: Int)
}