如何在当前范围内“发现”类型类/隐式值?

时间:2015-05-15 10:22:16

标签: scala typeclass read-eval-print-loop implicit

我已经使用了一些scala的内置类型类,并创建了一些我自己的类。但是,目前我遇到的最大问题是:我如何找到可用的类型类?虽然我写的大部分内容都很小而且很简单,但如果知道某些东西是否已经存在,那就很好了!

那么,标准库中是否有可用的所有类型类或隐式值的列表? 更好的是,是否可能以某种方式(可能在REPL中)生成当前范围内可用的隐式值列表?

1 个答案:

答案 0 :(得分:1)

这是一个好IDE的工作。

IntellijIDEA 14 +

在Scala Plugin 1.4.x中查看Implicits analyser。用法示例:

def myMethod(implicit a: Int) = {
}
implicit val a: Int = 1
myMethod // click the myMethod and press Ctrl+Shift+P, the "Implicit Parameters" is shown

的Eclipse

查看Implicit highlighting

Scala REPL

你可以列出这样的含义:

:implicits -v

调查他们的来源,如定义here

import reflect.runtime.universe
val tree = universe.reify(1 to 4).tree
universe.showRaw(tree)
universe.show(tree)