请考虑下面的代码:从不能用作构造函数参数的默认值同伴进口类
object Main extends App {
object Project {
case class Config(rules: Seq[String] = Seq.empty)
}
import Project._
//case class Project(root: String, config: Config) // compiles fine
//case class Project(root: String, config: Project.Config = Project.Config()) // compiles fine
case class Project(root: String, config: Config = Config()) // error: not found: type Config
}
为什么最后一个版本不编译(同与Config = Config.apply()
)?
它看起来像我的错误。 –
它可能与'case class's在他们的伴侣对象中添加一些代码的事实有关,所以他们在正确定义之前访问它时遇到了麻烦。然而,你可以在Project的构造函数中访问(隐式定义的)'Project.apply',所以对我来说真的很奇怪。 –
当我将伴随对象放在案例类后面时,它就起作用。 – Suma