之间的区别.和#

ale*_*lex 28 ruby rspec

在Ruby中,这两者之间有什么区别(在代码中):

  • Class.method
  • Class#method

cdn*_*cdn 30

散列格式(Class#方法)不是有效的ruby,但在文档中用于描述实例方法.

类方法通常使用双冒号(Class :: method)进行记录.

您将在ruby文档中看到两者的示例(例如http://www.ruby-doc.org/core-1.9.3/String.html)

实际调用类方法(Class.method)时,在代码中使用点格式,虽然我已经看到有些人(不幸的是)在文档中使用双冒号或散列来交替使用它.


hal*_*lex 27

这是一个命名惯例.

  • 用pound #method作为例子方法
  • 使用dot .method作为类方法

请参阅:如何命名RSpec描述方法的块

  • 是的,该博客文章不具有权威性。但 RuboCop 的 RSpec 风格指南也说了同样的事情:https://github.com/rubocop-hq/rspec-style-guide#describe-the-methods (2认同)

tex*_*uce 5

Class#method不是有效代码。它仅在文档中使用。方法应该是实例方法。

Class.method或 object.method 是属于该对象的实际方法。类也是一个对象。这是有效的代码。