2011-08-07 6 views
6

¿Cómo puedo hacer referencia a un campo de instancia al escribir documentación?¿Cómo hacer referencia a los métodos de instancia en la documentación?

consideran este código:

object Foo { 
    val foo = 42 
} 

class Foo { 
    val foo = 42 
} 

En Java, se podría usar Foo.foo para el método de "estática" y Foo#foo para el método de instancia.

Pero en Scala # ya se da por tipos dependientes de la trayectoria y

class Foo { 
    class foo 
    def foo = 42 
} 

es código legal, por lo que no puede hacer referencia a ella de forma inequívoca.

¿Hay alguna convención sobre cómo debería ser esto?

Respuesta

3

Tough. ¿Tal vez en inglés, como en el Foo's foo? Me había perdido la ambigüedad de #. Sin embargo, esa sigue siendo mi elección preferida, porque la ambigüedad solo existe en ausencia de contexto. Cuando se refiere a un tipo, # tiene un significado. Cuando se refiere a un valor o método, # tiene otro.

Dado que los tipos y métodos/valores no comparten el espacio de nombres, no veo aquí la ambigüedad de relevancia.

+0

Uso # para este propósito, también. – retronym

+0

El problema principal es ¿cómo debería ser una URL correspondiente que enlaza con ScalaDoc? No hay forma de insertar "contexto" en una URL ... excepto elegir un símbolo inequívoco. Y si ya tenemos que inventar un símbolo, podemos usarlo en la documentación también. – soc

+0

@soc Bueno, pero ¿a qué se refiere 'Foo.foo' en ScalaDoc? Para el 'tipo foo' en' objeto Foo', o para 'def foo' en' objeto Foo'? Este problema ya existe Dado que solo ocurre si las personas son tan groseras como para nombrar miembros tipo y no tipo con el mismo identificador, digo que lo ignoramos o resolvemos para ambos. Además ... iirc, '#' en una URL tiene un significado especial, por lo que no podemos usarlo en las URL, ¿o sí? –

Cuestiones relacionadas