41

オーバーロードされたメソッドを持つ Scala クラスを文書化しています。scaladoc コメントでそれらを参照する場合、どうすればそれらを区別できますか? たとえば、私が持っている場合

/**
 * The most important method is [[Doc.foo]].
 */
object Doc {
  def foo[A]: A = throw new UnsupportedOperationException;
  def foo[A,B >: A](x: A): B = x;
}

実行しsbt docて取得します

Doc.scala:1: 警告: リンク ターゲット "Doc.foo" があいまいです。いくつかの (おそらくオーバーロードされた) メンバーがターゲットに適合します。

  • foo[A,B>:A](x:A):BオブジェクトDocのメソッド[選択]
  • foo[A]:Nothingオブジェクト Doc のメソッド

リンクへの使用foo[A,B >: A]などは機能しません。

4

4 に答える 4

35

以下は、Scala 2.10 でトリックを行うようです。

/**
 * The most important method is [[Doc.foo[A]:A*]].
 */

そして、ここに scaladoc が私に与えるいくつかのヒントがあります:

[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.
于 2013-03-14T01:55:44.623 に答える
10

scaladoc のドキュメントを調べて、複雑な署名の解決策 (明らかに独自の解決策) を見つけました。

  • 署名にスペースを使用しないでください
  • 引数名を使用する
  • 引数の型と戻り値の型については、すべてのドットの前に単一のバックスラッシュを付けます\
  • *署名の最後に星を使用する
  • 完全な署名を使用します (あいまいな署名が提示されるため)。このステップはオプションです。*

例:

package org.my.stuff

class ReturnType

object Foo {
  class Bar {
    def lara(s: String): String = ???
    def lara(s: Foo.Bar): ReturnType= ???
  }
}

/** [[org.my.stuff.Foo$.Bar.lara(s:org\.my\.stuff\.Foo\.Bar):org\.my\.stuff\.ReturnType* The link to the right lara method]]
  */
object DocumentFooBarBingComplex {
}
于 2015-07-22T17:17:49.993 に答える