本文介绍了在 Scala 中使用反射的奇怪行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图从另一个问题中举出一个例子,但我发现了一些我无法解释的事情:
I was trying to follow an example from another question, and I came upon something I cannot explain:
scala> import scala.reflect.runtime.{currentMirror => m}
import scala.reflect.runtime.{currentMirror=>m}
scala> m.mkToolBox()
<console>:12: error: value mkToolBox is not a member of reflect.runtime.universe.Mirror
m.mkToolBox()
^
scala> import scala.tools.reflect.ToolBox
import scala.tools.reflect.ToolBox
scala> m.mkToolBox()
res3: scala.tools.reflect.ToolBox[reflect.runtime.universe.type] = scala.tools.reflect.ToolBoxFactory$ToolBoxImpl@225765b0
为什么在导入 ToolBox
之前 mkToolBox
不是 m
的成员,但之后呢?
How come mkToolBox
is not a member of m
before importing ToolBox
, but is afterwards?
推荐答案
ToolBox
是一个将 mkToolBox
拉到 Mirror
上的隐式类.与 Eval
相同的故事,它拉皮条 eval
.
ToolBox
is an implicit class that pimps mkToolBox
onto Mirror
. Same story with Eval
, which pimps eval
.
这篇关于在 Scala 中使用反射的奇怪行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!