我发现我越来越多地使用scala repl,当我没有网络时,我会使用它很多。我一直在添加自己的函数,以便更容易发现apis(通过python的dir端口)。我现在要做的就是通过implicits添加所有功能。我无法通过scala反射看到这种方法,所以我想我会看一下编译器,看看如何创建:implicits:https://github.com/scala/scala/blob/master/src/repl/scala/tools/nsc/interpreter/Imports.scala#L65。
在repl中,有没有办法访问IMain实例?如果没有,是否有另一种获取隐式方法列表(或所有隐式转换方法)的方法?
我只关心在repl中获取这些细节,所以如果它不能在repl之外工作,那很好。
答案 0 :(得分:1)
FWIW,我正在为标签完成做一些修复,一个建议的功能是在几个标签后显示增强功能。
scala> $intp
res0: scala.tools.nsc.interpreter.IMain = scala.tools.nsc.interpreter.ILoop$ILoopInterpreter@27fa135a
scala> :power
** Power User mode enabled - BEEP WHIR GYVE **
** :phase has been set to 'typer'. **
** scala.tools.nsc._ has been imported **
** global._, definitions._ also imported **
** Try :help, :vals, power.<tab> **
scala> intp
res1: scala.tools.nsc.interpreter.IMain = scala.tools.nsc.interpreter.ILoop$ILoopInterpreter@27fa135a
scala> analyzer.allViewsFrom(IntTpe, typer.context, Nil)
res2: List[($r.intp.global.analyzer.SearchResult, List[$r.intp.global.analyzer.global.TypeConstraint])] = List((SearchResult(scala.this.Int.int2double, ),List()), (SearchResult(scala.this.Int.int2float, ),List()), (SearchResult(scala.this.Int.int2long, ),List()))