Скаладок [вариант использования] - PullRequest
13 голосов
/ 05 ноября 2010

Почему некоторые описания методов в Scaladoc начинаются с [use case]?

Пример: scala.collection.immutable.StringOps.++

Это просто заполнитель, который будет заменен в будущем?

1 Ответ

24 голосов
/ 05 ноября 2010

Это упрощенные примеры того, как эти методы вызываются. Обычно эти методы (++, map, flatMap и т. Д.) Содержат неявный параметр, чаще всего аргумент, называемый фабрикой построителя, который (проще говоря) абстрагирует создание результирующих коллекций.

В большинстве случаев клиент коллекции не указывает эти неявные параметры, поэтому ScalaDoc позволяет определить упрощенное описание метода - сценарий использования . Это позволяет пользователям быстро понять идею, лежащую в основе рассматриваемого метода, и не беспокоиться о том, что, например, CanBuildFrom означает и как оно используется.

Например, это полное объявление ++:

def ++[B >: A, That](that: TraversableOnce[B])(implicit bf: CanBuildFrom[Repr, B, That]): That

В большинстве случаев тип целевой коллекции совпадает с получателем вызова, поэтому вызов выглядит примерно так, как если бы объявление было следующим (при условии, что ++ определено, скажем, List) :

def ++(that: TraversableOnce[A]): List[A]

Выше неявное разрешение разрешается во время компиляции, и выводятся параметры типа. В большинстве случаев это должно быть представление клиента о методе.

И если вы хотите аннотировать свой собственный метод с помощью вариантов использования, используйте тег @usecase в комментариях к документу:

/** ...
 *  ...
 *  @usecase def ++(that: TraversableOnce[A]): List[A]
 */
...