如何列出所有可用的隐式转换?

Joh*_*eng 3 scala

我知道在SCALA中我可以通过定义一些隐式函数将类型转换为另一种类型,我的问题是,如何在导入大量软件包后知道可以使用哪些转换?

例如,我有一个字符串,而且我怎么知道它可以转换为什么类型?

编辑澄清,我想在我的scala编译插件中执行它,所以我可能需要在一个reflect.api.tree类型上调用一个函数,然后得到implicits.我正在寻找一些方法来使用答案中提到的隐式[].

jwv*_*wvh 5

在REPL中,您可以调用:implicits以查看除Predef中可用的范围之外的所有范围内隐含.(添加-v以查看Predef含义.)

您还可以implicitly[]从代码中的任何位置调用该函数来测试特定的含义.

scala> implicitly[String => Seq[Char]]
res0: String => Seq[Char] = <function1>

scala> implicitly[String => Array[Char]]
<console>:12: error: No implicit view available from String => Array[Char].
       implicitly[String => Array[Char]]
                 ^
Run Code Online (Sandbox Code Playgroud)