Pourquoi méthodes de documentation de Ruby précédée par un signe dièse?
C'est quelque chose qui a été mise sur écoute de moi pendant un moment. Quand je vois toute méthode Ruby imprimé dans le texte, il apparaît que:
Class#method
ou
#method
Maintenant, je voudrais utiliser:
Class.method
Pourquoi toutes les méthodes Ruby précédée par un signe dièse? Est-il une raison pour cela? Juste curieux.
- Quand est-il de la date de retour pour?
Vous devez vous connecter pour publier un commentaire.
De la rdoc docs:
(Italiques ajoutés.)
Noter que la convention est:
plutôt que
Dans le code, vous avez
object.method
, siobject
était une instance declass
. Le#
convention n'est pas utilisé dans le code.De le RDoc documentation:
La # notation est utilisée pour se référer à l'canonique
instance
méthode, commeString#upcase
. L' . la notation est utilisé pour se référer à la méthode d'une instance particulière, commemystring.upcase
. La distinction est faite de ne pas impliquer qu'une méthode de la classe 'upcase' existe.Je viens de réaliser qu'aucune des autres réponses toucher le plus trivial aspect de la question: pourquoi le
#
signe?J'ai deux théories:
#sym
(au lieu de:sym
) car ils sont en Ruby. Donc, si vous voulez reportez-vous à une Méthode objet (par opposition à appel une méthode de), vous devez appeler quelque chose commeArray >> #new.
(Le>>
est elle-même une méthode qui retourne la méthode transmis. Donc, en Ruby qui seraitArray.method :new
.) En Smalltalk documentation, les méthodes sont généralement appelésClass>>method
, mais en RubyClass:method
aurait fait plus de sens, sauf qu'il est facilement confondu avecClass::method
. Par conséquent,Class#method
a été choisi.#
est le caractère de commentaire en Ruby.Une réponse définitive ne peut être donnée que par celui qui l'a inventé cette convention. Si elle a été inventée pour la de Programmation Ruby livre, qui serait soit de Dave Thomas ou Andy Hunt, mais j'en doute. Le livre est sorti en 2001, Ruby a commencé en 1993, comment ont-ils référence à des méthodes avant?
Class#method_name
qui s'est passé avant le prag progs ajouté.#
a été choisi, j'ai toujours trouvé que l'explication la plus probable à être les points d'ancrage utilisés pour passer à une méthode particulière dans la documentation de Java est l'utilisation de la même convention est largement soupçonné d'être de cette origine.Toutes les réponses ci-dessus vous liste sont corrects. La seule chose que je voudrais ajouter, c'est que la documentation style vous avez dit que vous perfer
pourrait être facilement confondu avec les méthodes de la classe. Puisque vous pouvez appeler les méthodes de la classe en ruby en utilisant la syntaxe ci-dessus:
Cela a été mentionné dans le JS version de cette question, mais il semble probable que cette nomenclature est venu de JavaDoc où la marque de hachage est traduit directement dans une page de référence, par exemple
href="Component.html#getComponentAt(int, int)"
heff de la réponse (que je ne peux pas commenter en raison du manque de réputation), que Ruby suivi JavaDoc de l'exemple, est la plus plausible à mon avis. La JavaDoc concepteurs nécessaire ou voulu un façon de distinguer paquet qualificatifs (où ils ont utilisé le point d') de la classe qualificatifs (où ils ont utilisé le hachage). JavaDoc s @voir et @link balises la syntaxe ressemble à ceci:
Consultez la documentation de JavaDoc de l'package.class variante de la balise @see et la documentation JavaDoc de @balise de lien, qui heff déjà souligné.
Dans la JavaDoc, le nom de package peut souvent être omis, de sorte que seule la Classe#membre reste la partie, ce qui semble tout aussi étrange, comme en Ruby, parce que le code Java utilise la Classe.membre de la syntaxe,
juste que Ruby n'.
Il serait intéressant de savoir pourquoi la JavaDoc concepteurs besoin de la syntaxe différente, tandis que le compilateur Java ne fine avec des points pour les deux fins.