有什么方法可以找出整个隐含链(我对所有隐含的类感兴趣).我正在使用IntelliJ Idea,但我正在寻找任何方法来做到这一点,即使我必须使用另一个IDE.(我想知道REPL是否可以帮助我)
例如,我写的是来自a gt b
哪里.我想知道:gt
scalaz
Order
使用a
收到一个方法gt
.对于这个特殊的例子,我知道使用了ToOrderOps
特性,但总的来说我可能不知道,我也无法弄清楚是如何ToOrderOps
导入的.Tra*_*own 20
在REPL中使用Scala反射API通常是开始此类调查的好方法:
scala> import scala.reflect.runtime.universe.reify
import scala.reflect.runtime.universe.reify
scala> import scalaz._, Scalaz._
import scalaz._
import Scalaz._
scala> println(reify(1 gt 2))
Expr[Boolean](Scalaz.ToOrderOps(1)(Scalaz.intInstance).gt(2))
scala> println(reify("a" gt "b"))
Expr[Boolean](Scalaz.ToOrderOps("a")(Scalaz.stringInstance).gt("b"))
Run Code Online (Sandbox Code Playgroud)
这ToOrderOps
是一个方法,而不是特征,并且Scalaz
表明你正在看到它因为scalaz.Scalaz
混合了ToOrderOps
特征,所以我认为这种方法可以解决你所有的三个问题.