无法为重载的方法创建ScalaDoc链接
我遇到了ScalaDoc在使用重载时不接受方法链接的问题。
一个独立的例子:File project/build.properties
:
sbt.version=0.13.2
文件build.sbt
:
scalaVersion := "2.11.0"
文件src/main/scala/Foo.scala
:
package foobar
/** @see [[Bar#foo]]
* @see [[Bar#bar]]
*/
case class Foo()
abstract class Bar {
def foo: Int
def bar: Foo
def bar(x: Option[Int]): Foo
}
当我运行sbt doc
, [[Bar#foo]]
链接没问题,但[[Bar#bar]]
链接不被接受:
[warn] .../src/main/scala/Foo.scala:3: The link target "Bar#bar" is ambiguous.
Several members fit the target:
[warn] (x: Option[Int]): foobar.Foo in class Bar [chosen]
[warn] : foobar.Foo in class Bar
[warn]
[warn]
[warn] Quick crash course on using Scaladoc links
[warn] ==========================================
[warn] Disambiguating terms and types: Prefix terms with '$' and types with '!' in case both names are in use:
[warn] - [[scala.collection.immutable.List!.apply class List's apply method]] and
[warn] - [[scala.collection.immutable.List$.apply object List's apply method]]
[warn] Disambiguating overloaded members: If a term is overloaded, you can indicate the first part of its signature followed by *:
[warn] - [[[scala.collection.immutable.List$.fill[A](Int)(⇒A):List[A]* Fill with a single parameter]]]
[warn] - [[[scala.collection.immutable.List$.fill[A](Int,Int)(⇒A):List[List[A]]* Fill with a two parameters]]]
[warn] Notes:
[warn] - you can use any number of matching square brackets to avoid interference with the signature
[warn] - you can use . to escape dots in prefixes (don't forget to use * at the end to match the signature!)
[warn] - you can use # to escape hashes, otherwise they will be considered as delimiters, like dots.
[warn] /** @see [[Bar#foo]]
[warn] ^
[warn] one warning found
所以使用“速成课程”,我尝试了各种各样的东西,例如
[[Bar#bar:Foo*]]
[[Bar!.bar:Foo*]]
[[foobar.Bar!.bar:foobar.Foo*]]
这些都不起作用。 无论是使用其他重载的变体:
[[Bar#bar(Option[Int])]]
[[Bar#bar(Option[Int]):Foo]]
[[Bar!.bar(Option[Int]):Foo*]]
所以无论(像往常一样)scala-doc完全破解,或者我做错了什么?
以下为我工作。 使用完全限定的参数和返回类型,其中点以为前缀。
[[Bar#bar:foobar.Foo* The first bar method without argument]]
[[Bar#bar(x:Option[Int]):foobar.Foo* The second bar method with argument]]
我尝试过:
package foobar
/** @see [[Bar#foo]]
* @see [[Bar!.bar*]]
* @see [[[Bar!.bar(x:Option[Int])*]]]
*/
case class Foo()
abstract class Bar {
def foo: Int
def bar: Foo
def bar(x: Option[Int]): Foo
}
虽然我得到了相同的警告,但是文档是通过链接到两个栏方法生成的。
所以我认为scala-doc并没有完全打破......只是有点烦人。
链接地址: http://www.djcxy.com/p/78679.html