Замените полные типы псевдонимами типов в Scaladoc
У меня есть черта с 4 параметрами типа: Decoder[E, D, F, T
] (где E
описывает закодированный тип, D
декодированный тип, F
тип отказа и T
является фантомным типом, используемым для маркировки экземпляров декодера).
Каждый проект, который определяет пользовательский Decoder
экземпляры также определяют псевдоним типа для них. Например: CellDecoder[Int]
это псевдоним типа для Decoder[String, Int, DecodeError, csv.type]
,
Есть дополнительная черта, DecoderCompanion[E, F, T]
, который определяет полезные методы для кастома Decoder
сопутствующий объект экземпляра. Так, например, CellDecoder
сопутствующий объект будет расширяться DecoderCompanion[String, DecodeError, csv.type]
,
Чтобы получить конкретный пример, вот как это может выглядеть:
trait DecoderCompanion[E, F, T] {
def apply[F](implicit dec: Decoder[E, D, F, T]): Decoder[E, D, F, T] = dec
}
object CellDecoder extends DecoderCompanion[String, DecodeResult, csv.type]
При создании документа API для CellDecoder
, scaladoc не поймет, что он должен заменить все экземпляры Decoder[String, D, DecodeResult, csv.type]
от CellDecoder[D]
, Читатели ожидают CellDecoder.apply
дать CellDecoder
не Decoder
- тип, о котором они могут даже не знать, существует.
Я понимаю, почему или, по крайней мере, почему это не будет поведением по умолчанию. Мне было интересно, есть ли способ, как в виде флага скальдока, так и на уровне типа, изменить это поведение?
1 ответ
Есть - но вам это может не понравиться:-)
Он включает в себя использование печально известной функции "варианта использования" Scaladoc. Например, см. Метод List # mapConserve и его исходную документацию. Обратите внимание на @usecase
тег? Вот что говорит Scaladoc: показывать данный тип "варианта использования" в главном обзоре и скрывать фактический тип в области "Полная подпись".