本文介绍了在 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 中使用反射的奇怪行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-15 11:38