在Scaladoc中按类型别名替换完整类型

时间:2016-10-20 21:12:15

标签: scala scaladoc

我有一个包含4个类型参数的特征:Decoder[E, D, F, T](其中E描述编码类型,D解码类型,F失败类型和{{ 1}}是用于标记解码器实例的幻像类型。

定义自定义T实例的每个项目也为它们定义了一个类型别名。例如:DecoderCellDecoder[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标志还是类型级别的欺骗,来改变这种行为?

1 个答案:

答案 0 :(得分:2)

有 - 但你可能不喜欢它: - )

它涉及使用臭名昭着的Scaladoc'用例'特征。例如,请参阅List#mapConserve方法及其source documentation。注意@usecase标签?这就是告诉Scaladoc展示给定用例'在主要概述中键入,并在“完整签名”中隐藏实际类型。区域。