有一段时间,我一直试图了解LazyModule
抽象类和diplomacy
包。最简单的结论是LazyModule类的子对象只有在第一次访问它们时才会被实例化。 (如果我错了,请纠正我)
在RocketTile.scala中,有多个示例LazyModule
用法,例如:
scala
lazy val module = new LazyModuleImp(this) {...
如果未声明值lazy
并且仍然为其分配LazyModule
?
换句话说," laziness"创建的值来自它继承自LazyModule
还是我们必须将lazy
放在前面以获得预期的行为?
答案 0 :(得分:1)
我无法详细解释,但将提供此解释:lazy
表示Scala语言的延迟初始化。 lazy val module
仅在需要时执行/评估。它可以很好地满足所提出的用例,因为只有在完成设计配置后才对硬件描述进行评估。
我前一段时间写了这篇博客。它可能会提供其他见解:
http://blog.edmondcote.com/2017/04/parameters-and-lazy-modules.html