如何从repl访问scala文档?

wn-*_*wn- 30 scala read-eval-print-loop

首先是内置文档,也是我自己的代码.

具体来说,我希望获得类似于python中的信息,您可以在方法或对象上调用help()来获取有关打印到repl中的对象的信息.

Rex*_*err 21

Scaladocs是以HTML格式生成的,因此您不希望它们出现在REPL窗口中.但是,您可能希望从REPL在浏览器中加载文档.您可以通过创建自己的方法来实现这一点(这个方法需要一个实例; Class[A]如果您愿意,可以使用实例代替):

def viewdoc[A](a: A) {
  val name = a.asInstanceOf[AnyRef].getClass.getName
  val url = "http://www.scala-lang.org/api/current/index.html#"+name
  val pb = new ProcessBuilder("firefox",url)
  val p = pb.start
  p.waitFor
}
Run Code Online (Sandbox Code Playgroud)

如果你想获得额外聪明,你可以解析的名字在Javadoc中指向的网页浏览器的Java类和Scaladocs对Scala类何地,你有你的文档你的类.您可能还想使用本地源file:///my/path/to/docs/index.html#代替Web上的API.但是我用这个你可以尝试一下

scala> viewdoc(Some(1))
Run Code Online (Sandbox Code Playgroud)

  • 抱歉混淆 - scaladoc输出可能是html,但文档抽象地不是html - 它是带注释的文本.当我想学习哪些方法时,我想在repl shell中看到该文本(以某种shell友好的显示格式).这对于查看源代码(快速迭代和开发)也很方便. (7认同)
  • 这些都不是必需的(或者可能是可取的).如果您使用过ipython,就会知道我的意思,否则请参阅http://scienceoss.com/getting-help-in-ipython/并尝试一下可能的例子(并且很棒).我希望有类似的东西?存在,或者在scala中很容易做到. (4认同)
  • 对于"Mac OS X"中的"Google Chrome",请使用此`ProcessBuilder`命令`val pb = new ProcessBuilder("open"," - a","Google Chrome",url)` (2认同)