2012-10-06 74 views
23

En Rubí ¿cuál es la diferencia entre los dos (en código):Diferencia entre. y #

  • Class.method
  • Class#method
+0

En el código, el primero es una llamada a un método, mientras que el segundo es un comentario. –

Respuesta

24

El formato hash (método Class #) no es ruby ​​válido, pero se usa en la documentación para describir un método de instancia.

Los métodos de clase generalmente se documentan usando un doble punto (método Class ::).

Verá ejemplos tanto en los documentos de rubí (por ejemplo http://www.ruby-doc.org/core-1.9.3/String.html)

El formato de punto se utiliza en código cuando en realidad llamar un método de clase (Class.method), aunque he visto algunas personas (desafortunadamente) usarlo indistintamente con el doble punto o el hash en la documentación.

22

Es una convención de nomenclatura.

  • uso libra #method de los métodos de instancia
  • uso de puntos .method de métodos de clase

Ver: How to name RSpec describe blocks for methods

+0

basado en esa publicación de blog súper escueta solo? ¿No debería seguirse el formato de documentación, es decir, 'Class :: method' para un método de clase? – Todd

+0

Estoy con cdn en este caso. Los documentos de Ruby son una fuente canónica, la publicación del blog no es autoritativa y '.method' es confuso porque todos los métodos se llaman de esa manera. Además de eso, se accede a las constantes de clase a través de '::' por lo que tiene sentido. –

2

Class#method no es un código válido. Solo se usa en la documentación. método debe ser un método de instancia.

Class.method o object.method es el método real que pertenece al objeto. La clase también es un objeto. Es un código válido.