我有一个包含4个类型参数的特征:Decoder[E, D, F, T
](其中E
描述编码类型,D
解码类型,F
失败类型和{{ 1}}是用于标记解码器实例的幻像类型。
定义自定义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文档时,scaladoc不会发现它应该CellDecoder
替换Decoder[String, D, DecodeResult, csv.type]
的所有实例。读者会希望CellDecoder[D]
产生CellDecoder.apply
,而不是CellDecoder
- 他们可能甚至不知道的类型。
我理解为什么,或者至少为什么这不是默认行为。我想知道是否有一种方法,无论是作为scaladoc标志还是类型级别的欺骗,来改变这种行为?
答案 0 :(得分:2)
有 - 但你可能不喜欢它: - )
它涉及使用臭名昭着的Scaladoc'用例'特征。例如,请参阅List#mapConserve方法及其source documentation。注意@usecase
标签?这就是告诉Scaladoc展示给定用例'在主要概述中键入,并在“完整签名”中隐藏实际类型。区域。