Как искать методы в 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
ищет все классы с именем AnyReftrait _
ищет все чертыobject _
ищет все объектыclass A_ || class B_
ищет все классы, которые начинаются с A или Bclass _ extends _ with _
ищет все классы, которые расширяют класс и реализуют чертуvar _: Int
ищет все значения или переменные типа Int, переменные отображаются перед значениямиdef toString
ищет все методы с именем toStringdef toString : String
ищет все методы с именем toString и возвращаемым типом Stringdef _(_) : Boolean
ищет все методы с одним аргументом и returnType Booleandef _(Int, _)
ищет все методы с аргументами, и первый имеет тип Intdef _(_, *)
ищет все методы с одним или несколькими аргументамиdef _(Iterable[_]):Int
ищет все методы, которые принимают Iterable и возвращают Int(Iterable[_]) => Int
эквивалентный вышеупомянутому, лямбда-синтаксис также может использоваться для поиска методов.=> (_, _)
ищет все методы, которые возвращают кортеж с двумя элементами.def _((_) => _)
ищет все методы, которые имеют один в качестве первого параметра метод, который принимает и возвращает любое значение.
К сожалению, результаты поиска colladoc могут быть пугающими. Если член существует во многих чертах / классах из-за наследования (например, sum
метод в коллекции API), все классы перечислены в результатах.
скалярный алфавитный указатель
В самом скалярном поиске такого поиска нет, но есть алфавитный указатель, содержащий элементы класса / объекта / признака. Просто нажмите на одну из букв под строкой поиска в верхнем левом углу, и вы увидите список, содержащий классы, объекты, черты и члены, начинающиеся с этой буквы (или символов, если вы нажмете ссылку "#")). Затем вы можете использовать функцию поиска вашего браузера, чтобы найти интересующего вас участника.
Я использую алфавитный указатель в левом верхнем углу под окном поиска. Было бы неплохо, если бы были правильные функции поиска.
Было бы также неплохо, если бы документы были доступны в формате справки Windows, как и для Java, что гораздо удобнее, чем HTML-код Javadoc, и позволяет искать методы с почти нулевой задержкой.
Совсем не серебряная пуля, но может помочь вам, если вы ищете что-то в библиотеках Scala и Scalaz: scalex.
Это не просто поисковая система в Интернете, но может использоваться как инструмент CLI или плагин sbt.
Раньше такой инструмент был, к сожалению, похоже, что он сорван.