2016-05-02 115 views
0

我是scala的新手,并且在文档中挣扎了一下。我正在查看spark代码库中的一段代码(余弦相似度为RowMatrix),并看到它们使用Iterator.tabulate。不知道我在scala API docs中查看了哪些功能,只能查明该功能不存在。除了它确实存在,因为我可以在repl中使用它(嗯,也许我正在查看错误的API文档版本......不,这是当前版本)。斯卡拉伴侣对象模板(Iterator.tabulate)

经过一番搜索后,我发现tabulate(至少)在scala.collection.generic.SeqFactoryscala.collection.generic.TraversableFactory中被定义。然而这两个似乎不是连接在依赖图中。我无法在两者之间找到任何路径,因此无法真正了解 - 从查看API文档 - 甚至存在.tabulate

所以问题是:你怎么找到.tabulate和它的文档从查看该类的API文档(例如IteratorSeq)。我是否只需要按照自己的方式来操作它,或者在scala文档中是否有一些魔术按钮可以让它显示出来?

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

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

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

回答

1

在斯卡拉源代码中的所有逻辑迭代器定义在一个文件Iterator.scala。您正在寻找的功能tabulate在斯卡拉API中的object Iterator中定义,您可以通过trait Iterator进行搜索,所以这就是您找不到它的原因。

doc右下角则可以切换到对象迭代器,在这里你会发现[email protected] UTIL功能。

+0

啊,我知道它必须是那样的简单。我认为'O'和'T'只是表明它既是一个物体又是一个特质。甚至没有尝试点击它们,而不是有史以来最好的UI设计。也只是注意到右上角有相关的文档。 –