Как искать методы в Scaladoc, глобально?

Есть ли возможность, что я могу искать метод в классе, признаке или объекте через scala doc, глобально? Пример: у меня есть имя метода, и я не знаю, к какому классу он принадлежит, поэтому я могу напечатать его в каком-то поиске по скаладоку, и он покажет мне классы, содержащие метод с заданным именем. (PS: я бы добавил тег скаладок, но, видимо, я недостойен...)

3 ответа

Я не думаю, что есть общий, встроенный метод. Так что, если скаладок онлайн, я использую моего друга Google. Например, для поиска метода, называемого left в scala API, я использую запрос:

"def left" site:http://www.scala-lang.org/api/current/

Если это на моем жестком диске, я использую grep.

colladoc

Инструмент colladoc имеет более полезный интерфейс поиска для скалярных документов, чем стандартный инструмент скаладок.

Вы можете ограничить поиск именами методов, поставив перед строкой поиска префикс "def", как, например, "def implicitly". Если вы нажмете на увеличительное стекло рядом с окном поиска с пустой строкой поиска, вы получите следующий удобный список примеров запросов:

  • any ищет все, что имеет слово any в своем названии, определении или комментарии
  • any_ ищет все, что начинается с любого
  • //_any ищет все комментарии, содержащие слово, оканчивающееся любым
  • class AnyRef ищет все классы с именем AnyRef
  • trait _ ищет все черты
  • object _ ищет все объекты
  • class A_ || class B_ ищет все классы, которые начинаются с A или B
  • class _ extends _ with _ ищет все классы, которые расширяют класс и реализуют черту
  • var _: Int ищет все значения или переменные типа Int, переменные отображаются перед значениями
  • def toString ищет все методы с именем toString
  • def toString : String ищет все методы с именем toString и возвращаемым типом String
  • def _(_) : Boolean ищет все методы с одним аргументом и returnType Boolean
  • def _(Int, _) ищет все методы с аргументами, и первый имеет тип Int
  • def _(_, *) ищет все методы с одним или несколькими аргументами
  • def _(Iterable[_]):Int ищет все методы, которые принимают Iterable и возвращают Int
  • (Iterable[_]) => Int эквивалентный вышеупомянутому, лямбда-синтаксис также может использоваться для поиска методов.
  • => (_, _) ищет все методы, которые возвращают кортеж с двумя элементами.
  • def _((_) => _) ищет все методы, которые имеют один в качестве первого параметра метод, который принимает и возвращает любое значение.

К сожалению, результаты поиска colladoc могут быть пугающими. Если член существует во многих чертах / классах из-за наследования (например, sum метод в коллекции API), все классы перечислены в результатах.

скалярный алфавитный указатель

В самом скалярном поиске такого поиска нет, но есть алфавитный указатель, содержащий элементы класса / объекта / признака. Просто нажмите на одну из букв под строкой поиска в верхнем левом углу, и вы увидите список, содержащий классы, объекты, черты и члены, начинающиеся с этой буквы (или символов, если вы нажмете ссылку "#")). Затем вы можете использовать функцию поиска вашего браузера, чтобы найти интересующего вас участника.

Я использую алфавитный указатель в левом верхнем углу под окном поиска. Было бы неплохо, если бы были правильные функции поиска.

Было бы также неплохо, если бы документы были доступны в формате справки Windows, как и для Java, что гораздо удобнее, чем HTML-код Javadoc, и позволяет искать методы с почти нулевой задержкой.

Совсем не серебряная пуля, но может помочь вам, если вы ищете что-то в библиотеках Scala и Scalaz: scalex.

Это не просто поисковая система в Интернете, но может использоваться как инструмент CLI или плагин sbt.

Раньше такой инструмент был, к сожалению, похоже, что он сорван.

Другие вопросы по тегам