Есть ли вероятность, что я могу искать метод в классе, признаке или объекте через scala doc, глобально? Пример: у меня есть имя метода, и я не знаю, к какому классу он принадлежит, поэтому я могу ввести его в некоторый поиск scaladoc, и он покажет мне классы, содержащие метод с заданным именем. (PS: я бы добавил тег scaladoc, но, видимо, я недостоин...)
Как искать методы в Scaladoc, глобально?
Ответ 1
colladoc
инструмент colladoc имеет более удобный интерфейс поиска для скалядоков, чем стандартный инструмент scaladoc.
Вы можете ограничить поиск именами методов, префикс строки поиска "def", как в "def implicitly". Если вы нажмете на увеличительное стекло рядом с полем поиска, с пустой строкой поиска, вы получите следующий удобный список пробных запросов:
any
выполняет поиск всего, что имеет слово any в его имени, определении или комментарииany_
ищет все, что начинается с любого//_any
выполняет поиск всех комментариев, содержащих слово, которое заканчивается с помощьюclass AnyRef
выполняет поиск всех классов с именем AnyReftrait _
выполняет поиск всех признаковobject _
выполняет поиск всех объектовclass A_ || class B_
выполняет поиск всех классов, начинающихся с A или Bclass _ extends _ with _
выполняет поиск всех классов, которые расширяют класс и реализуют признакvar _: Int
выполняет поиск всех значений или переменных типа Int, vars отображаются перед valsdef toString
выполняет поиск всех методов с именем toStringdef toString : String
выполняет поиск всех методов с именем toString и возвращает тип Stringdef _(_) : Boolean
ищет все методы с одним аргументом и returnType Booleandef _(Int, _)
ищет все методы с аргументами, а первый имеет тип Intdef _(_, *)
выполняет поиск всех методов с одним или несколькими аргументамиdef _(Iterable[_]):Int
выполняет поиск всех методов, которые принимают Iterable, и возвращает Int(Iterable[_]) => Int
equvalent выше, синтаксис лямбда также может использоваться для поиска методов.=> (_, _)
выполняет поиск всех методов, возвращающих кортеж с двумя элементами.def _((_) => _)
выполняет поиск всех методов, которые имеют один в качестве первого параметра метод, который принимает и возвращает любое значение.
К сожалению, результаты поиска colladoc могут быть сложными. Если член существует во многих чертах/классах из-за наследования (например, метод sum
в API коллекций), все классы перечислены в результатах.
scaladoc Алфавитный указатель
Нет такого поиска в самом скаладоке, но есть алфавитный индекс, содержащий элементы класса/объекта/объекта. Просто нажмите на одну из букв под панелью поиска в верхнем левом углу, и вы увидите список, содержащий классы, объекты, черты и элементы, начиная с этой буквы (или символов, если вы нажмете на ссылку "#" ). Затем вы можете использовать функцию поиска в браузере, чтобы найти интересующего вас участника.
Ответ 2
Я не думаю, что есть общий, встроенный метод. Поэтому, если скайдакок онлайн, я использую своего друга Google. Например, для поиска метода, называемого left в API scala, я использую запрос:
"def left" site:http://www.scala-lang.org/api/current/
Если на моем жестком диске я использую grep.
Ответ 3
Я использую алфавитный указатель в верхнем левом углу окна поиска. Было бы неплохо, если бы были правильные функции поиска.
Было бы неплохо, если бы документы были доступны в формате справки Windows как они есть для Java, что намного удобнее, чем html javadoc, и позволяет искать методы с почти нулевой задержкой.
Ответ 4
Совсем не серебряная пуля, но может помочь вам, если вы ищете что-то в Scala и библиотеках Scalaz: scalex.
Это не просто онлайн-поисковая система, но может использоваться как инструмент CLI, так и sbt-плагин.
Раньше был такой инструмент, к сожалению, похоже, что он подстригся.