2014-04-24 67 views
2

我發現我越來越多地使用scala repl,並且在沒有網絡時使用它。我一直在添加自己的函數來使apis的發現更容易(通過python的dir端口)。我現在想要做的一件事是通過隱含添加所有功能。我無法看到從scala反射中獲得這種方式,所以我想我會看看編譯器,看看如何:implicits創建:https://github.com/scala/scala/blob/master/src/repl/scala/tools/nsc/interpreter/Imports.scala#L65在Scala的repl中,以編程方式查找隱式添加的函數

在repl中,是否有任何方法可以訪問IMain實例?如果沒有,是否有另一種方法來獲得隱式方法(或所有隱式轉換方法)的列表?

我只關心在repl中獲取這些細節,所以如果它不會在repl之外工作,那很好。

回答

1

FWIW,我正在爲選項卡完成做一些修復,一個建議的功能是在幾個選項卡後顯示增強功能。

scala> $intp 
res0: scala.tools.nsc.interpreter.IMain = [email protected] 

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 = [email protected] 

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())) 
+0

謝謝,我應該能夠得到這個吧! – ekaqu

相關問題