2016-05-02 155 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設計。也只是注意到右上角有相關的文檔。 –