我该如何从repl中查看scala文档?

31

首先是针对内置文档,还有我的代码。

具体来说,我希望能够获取类似于在 Python 中调用 help() 方法或对象以获取有关该对象的信息并打印到 REPL 中的信息。


请参见https://dev59.com/d1HTa4cB1Zd3GeqPU9NR。 - ax.
2
这个问题不是4160745问题的完全重复。它是关于Scala REPL而不是命令行的问题。 - paradigmatic
1个回答

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
}

如果你想更加聪明,你可以解析名称来指向 Java 类的 Javadocs 和 Scala 类的 Scaladocs 以及你的类文档在哪里。你还可能想使用本地源file:///my/path/to/docs/index.html#而不是Web上的API。但我使用了这个,所以你可以尝试一下。

scala> viewdoc(Some(1))

1
只是一个简短的提示:firefox 必须在路径中,并且在 Windows 系统上必须添加 .exe - michael.kebe
1
@michael.kebe - 是的,你必须安装Firefox,或者从命令行使用另一个Web浏览器等。 :) - Rex Kerr
9
抱歉造成困扰 - scaladoc 输出可能是 HTML,但是文档本质上不是 HTML,而是带注释的文本。当我想要了解方法的作用时,我想在 repl shell 中看到这些文本(以某种适合 shell 的显示格式)。这对于查看源代码(用于快速迭代和开发)也很方便。 - wn-
4
不需要这些(可能也不太理想)。如果你使用过ipython,就知道我在说什么,否则请参见http://scienceoss.com/getting-help-in-ipython/并尝试一下,了解一下可能性(非常棒)。我希望有类似于“??”这样的东西存在,或者在Scala中很容易实现。 - wn-
2
在Mac OS X中使用ProcessBuilder命令来启动Google Chrome,请使用以下命令:val pb = new ProcessBuilder("open", "-a", "Google Chrome", url) - Hanxue
显示剩余13条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接