Tai*_*aig 10 scala scala-implicits
为了减少项目的编译时间,我正在缓存某些通过隐式查找解析的类型类.这看起来有些麻烦,因为直接实现不起作用:
scala> implicit val x: String = implicitly[String]
x: String = null
Run Code Online (Sandbox Code Playgroud)
隐式查找将其自己的未初始化定义视为有效实现.A lazy val会以无限递归的方式吹制堆栈.因此,我正在以这种方式处理它:
implicit val x: String = cache.x
object cache {
val x: String = implicitly[String]
}
Run Code Online (Sandbox Code Playgroud)
但这使得它过于复杂,并且缓存定义不能轻易地使用其他缓存类型(因为它们不是隐式的).
此外,遗憾的是,将值本身隐藏在范围内并不起作用.
scala> :pas
// Entering paste mode (ctrl-D to finish)
object scope {
implicit val x: String = {
import scope.{ x => _ }
implicitly[String]
}
}
// Exiting paste mode, now interpreting.
defined object scope
scala> scope.x
res0: String = null
Run Code Online (Sandbox Code Playgroud)
是否有更优雅的方法来实现隐式解析缓存?