首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算出隐式调用链

计算出隐式调用链
EN

Stack Overflow用户
提问于 2016-01-20 15:03:54
回答 1查看 267关注 0票数 6

有没有办法找出整个隐式链(我对所有的隐式链都感兴趣)。我正在使用IntelliJ的想法,但我正在寻找任何方法来做到这一点,即使我必须使用另一个IDE。(我想知道REPL能否帮到我)

例如,我编写了a gt b,其中gt来自scalaz。我想知道:

  1. 究竟使用了什么隐式Order实例?
  2. 使用了什么类型(我知道在这个特定的例子中的答案-在黄曲霉中很容易,但通常有时它并不总是那么明显)。
  3. 全链a如何接收到一个方法gt。对于这个特殊的例子,我知道使用了ToOrderOps特性,但通常我可能不知道,我也不知道ToOrderOps是如何导入的。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-20 15:20:56

在REPL中使用Scala反射API通常是开始这种研究的好方法:

代码语言:javascript
复制
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特征,所以我认为这种方法解决了所有三个问题。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34903520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档