Ruby 不创建实例就可以访问方法吗?

Ruby 不创建实例就可以访问方法吗?,ruby,Ruby,我在模块中有一个类,它有方法: module D class Dog @name = 'pluto' def setName( n ) @name = n end def getName () return @name end end end 我可以访问 GETNAME>代码>,而不创建一个实例,比如“代码>狗>代码>,就像C++中的静态方法一样?比如: D::Dog.getName () 而不是: d = D::Dog

我在模块中有一个类,它有方法:

module D
  class Dog
    @name = 'pluto'
    def setName( n )
      @name = n
    end
    def getName ()
      return @name
    end
  end
end

我可以访问<代码> GETNAME>代码>,而不创建一个实例,比如“代码>狗>代码>,就像C++中的静态方法一样?比如:

D::Dog.getName ()
而不是:

d = D::Dog.new
d.getName()

我相信您正在寻找Ruby中的类方法:

module SomeModule
  class SomeClass
    @class_variable = "some_string" # An instance variable on a class

    def self.some_class_method
      @class_variable # Return can be omitted in Ruby
    end

    # This is how setter methods are usually written in Ruby
    def self.some_class_method= new_value
      @class_variable = new_value
    end
  end
end

SomeModule::SomeClass.some_class_method
#=> "some_string"

你想用它做什么?不要写无关的东西。
打印“Hello world”
与您的问题有什么关系?
D
不是一个类。你不能创建它的实例,我不相信你的例子能很好地演示静态/类方法的良好使用。为什么希望“Dog”类上的“name”属性是静态的?这似乎作为一个实例方法会好得多。这个问题有什么不好?它应该得到-3?明白了:@purpletech这个答案中的例子没有打印“some_string”,它只是返回它。如果要打印出值,请在最后一行前面加上
put
。(例如,
将SomeModule::SomeClass.SomeClass\u方法
而不仅仅是
SomeModule::SomeClass.SomeClass\u方法