2012-10-06 57 views
23

In Ruby qual è la differenza tra questi due (in codice):Differenza tra. e #

  • Class.method
  • Class#method
+0

Nel codice, il primo è una chiamata al metodo mentre il secondo è un commento. –

risposta

24

Il formato hash (metodo Class #) non è ruby ​​valido, ma viene utilizzato nella documentazione per descrivere un metodo di istanza.

I metodi di classe vengono in genere documentati utilizzando un doppio punto (metodo Class ::).

Vedrete esempi di entrambi nella documentazione rubino (per esempio http://www.ruby-doc.org/core-1.9.3/String.html)

Il formato di punti viene utilizzato nel codice, quando in realtà chiama un metodo di classe (Class.method), anche se ho visto alcune persone (sfortunatamente) lo usi in modo intercambiabile con il doppio-colon o hash nella documentazione.

22

Si tratta di una convenzione di denominazione.

  • uso libbra #method per metodi di istanza
  • uso dot .method per metodi di classe

See: How to name RSpec describe blocks for methods

+0

basato su quel superbo post sul blog? Non dovrebbe essere seguito il formato della documentazione, ad esempio 'Class :: method' per un metodo di classe? – Todd

+0

Sono con cdn su questo. I documenti di Ruby sono una fonte canonica, il post del blog non è autorevole e '.method' è confuso perché tutti i metodi sono chiamati in questo modo. Oltre a ciò, le costanti di classe sono accessibili tramite '::' quindi ha senso. –

2

Class#method non è codice valido. Viene utilizzato solo nella documentazione. il metodo dovrebbe essere un metodo di istanza.

Class.method o object.method è il metodo effettivo appartenente all'oggetto. Anche la classe è un oggetto. È un codice valido.