为什么scaladoc方法签名错误?

时间:2014-10-01 00:47:27

标签: scala scaladoc

Scala API中有很多地方,特别是在集合中,方法签名错误。

例如,MapflatMap的scaladoc签名表示

def flatMap[B](f: (A) ⇒ GenTraversableOnce[B]): Map[B]

但实际的签名是

flatMap[B, That](f: ((A, B)) ⇒ GenTraversableOnce[B])
    (implicit bf: CanBuildFrom[Map[A, B], B, That]): That

这一点特别没有意义,因为scaladoc签名包含Map[B],但Map有两个类型参数,而不是一个。

这里发生了什么?这是一个错误吗?

1 个答案:

答案 0 :(得分:13)

您在生成的文档中看到的错误签名被称为"用例"。他们应该通过展示理想化的API来澄清文档,类似于真实的API,但省略了繁琐的细节(如普遍的隐式CanBuildFrom参数bothers some people)。

对于使用用例的方法,您可以通过单击方法名称来显示该方法的详细信息,然后单击"完全签名"展开另一个显示签名的部分。

参考

    2010年5月创建的
  • Scala issue SI-3448专门处理为Map显示的错误数量的类型参数。此问题已关闭"赢得了修复"在2012年7月。

  • Paul Phillips'从2014年1月开始,Scala Collections: Why Not?会将用例视为"谎言"在slide 1slide 2slide 3

  • GenTraversableLike.scala中,您可以看到一个导致生成用例文档的指令示例:

    @usecase def flatMap[B](f: A => TraversableOnce[B]): $Coll[B]
    

类似问题