如何在当前范围内 'discover' 键入 classes/implicit 值?

How can I 'discover' type classes/implicit values in the current scope?

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

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

这是一份很好的工作IDE。

IntellijIDEA 14+

查看 Scala 插件 1 中的 Implicits analyser。4.x。用法示例:

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

日食

查看 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)