【问题标题】:scala companion object templates (Iterator.tabulate)scala 伴随对象模板 (Iterator.tabulate)
【发布时间】:2018-01-15 12:01:43
【问题描述】:

我是 scala 的新手,在文档方面有点挣扎。我正在查看spark 代码库中的一段代码(RowMatrix 的余弦相似度)并看到他们使用Iterator.tabulate。不知道我在scala API docs 中查看的那个函数是什么,只是发现这个函数不存在。除了它确实存在,因为我可以在 repl 中使用它(嗯,也许我正在查看错误的 API 文档版本......不,这是当前版本)。

经过一番搜索,我发现tabulate (至少)在scala.collection.generic.SeqFactoryscala.collection.generic.TraversableFactory 中定义。然而,这两个在依赖图中似乎没有连接。我找不到两者之间的任何路径,因此无法通过查看 API 文档实际知道 .tabulate 甚至存在。

所以问题是:您如何找到 .tabulate 以及查看该类的 API 文档的文档(例如 IteratorSeq)。我只需要用谷歌搜索,还是 scala 文档中有一些神奇的按钮可以让这个东西出现?

这似乎不仅限于.tabulate,而是一个更常见的问题(至少对我而言),查看 API 中从未提及的库代码函数似乎存在。另一个例子是

org.apache.spark.mllib.linalg.distributed.RowMatrix.toBreeze

我仍然不知道该函数是否存在,一些代码似乎使用它,但我找不到任何关于它的文档。

【问题讨论】:

    标签: scala


    【解决方案1】:

    在 Scala 源代码中,Iterator 的所有逻辑都定义在一个文件 Iterator.scala 中。您要查找的函数 tabulate 在 Scala API 中的 object Iterator 中定义,您通过 trait Iterator 进行搜索,这就是您找不到它的原因。

    doc的右上角你可以切换到object iterator,在这里你会找到Iterator$@tabulate的util函数。

    【讨论】:

    • 啊,我知道它必须像那样简单。我认为OT 只是表明它既是一个对象又是一个特征。甚至没有尝试点击它们,这不是有史以来最好的 UI 设计。也刚刚注意到右上角有相关文档。
    猜你喜欢
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    相关资源
    最近更新 更多