有没有办法找出整个隐式链(我对所有的隐式链都感兴趣)。我正在使用IntelliJ的想法,但我正在寻找任何方法来做到这一点,即使我必须使用另一个IDE。(我想知道REPL能否帮到我)
例如,我编写了a gt b,其中gt来自scalaz。我想知道:
Order实例?a如何接收到一个方法gt。对于这个特殊的例子,我知道使用了ToOrderOps特性,但通常我可能不知道,我也不知道ToOrderOps是如何导入的。发布于 2016-01-20 15:20:56
在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"))这里的ToOrderOps是一种方法,而不是特征,而Scalaz表示您正在看到它,因为scalaz.Scalaz混合了ToOrderOps特征,所以我认为这种方法解决了所有三个问题。
https://stackoverflow.com/questions/34903520
复制相似问题