Ruby 如何访问类变量?

Ruby 如何访问类变量?,ruby,Ruby,在线@goodbay=TestClass.variable 怎么了?在Ruby中,必须通过对象上的方法读取和写入对象的@实例变量(和@@class变量)。例如: undefined method 'varible' for TestClass:Class Ruby有一些内置的方法来为您创建简单的访问器方法。如果要在类上使用实例变量(而不是类变量): 您必须正确访问类变量。其中一种方法如下: class TestClass mattr_accessor :variable end cla

在线
@goodbay=TestClass.variable


怎么了?

在Ruby中,必须通过对象上的方法读取和写入对象的
@实例
变量(和
@@class
变量)。例如:

undefined method 'varible' for TestClass:Class 
Ruby有一些内置的方法来为您创建简单的访问器方法。如果要在类上使用实例变量(而不是类变量):


您必须正确访问类变量。其中一种方法如下:

class TestClass
  mattr_accessor :variable
end
class测试类
@@varible=“var”
“var”类
有其他方法

类RubyList
@@geek=“Matz”
@@国家=‘美国’
结束
RubyList.class\u变量集(:@@geek,'Matz rocks!')
放置RubyList.class\u变量\u get(:@@geek)

你的意思是不是说
cattr\u访问者
?:)cattr_accessor是更好的名称,但它只是mattr_accessor的别名(根据我给出的链接)。另外,需要注意的是,这不需要使用accessor方法,因为
Object\instance\u variable\u get
将允许访问所有实例变量(
@
),而
Object\class\u variable\u get
为类变量提供相同的访问方法(
@
)不需要显式的getter方法,例如
TestClass.instance\u variable\u get(:@variable)
TestClass.class\u variable\u get(:@@variable)
谢谢,成功了!我希望ruby有更大的灵活性。事实证明,我们使用getter而不是直接访问变量,使用小型pojo对象会让人不舒服。重新访问实例/类变量(主要是从控制台),对我来说就像
FooClass.class\u variable\u set(:@@foo,'bar'))
FooClass.class\u variable\u get(:@@foo)
,对于实例
foo\u class.instance\u variable\u set(:@foo,'baz')
foo\u class.instance\u variable\u get(:@foo)
。它们接受符号
:@foo
或字符串
,@foo'
(感谢engineersmnky的发布。)谢谢兄弟,但不幸的是,这导致了更严重的错误。@VladislavAniskin这不可能导致错误,因为它是正确的(少数之一)访问类变量的方法。@VladislavAniskin您是如何得出
这导致了更严重的错误的
?您是否尝试过?可能是因为平台。我尝试过,我发现同样的事情/@VladislavAniskin是不可能的,除非您在windows上:D我向您保证,此代码101%正常工作
class TestClass
  @@variable = "var"
  def self.variable
    # Return the value of this variable
    @@variable
  end
end

p TestClass.variable #=> "var"
class TestClass
  @variable = "var"
  class << self
    attr_accessor :variable
  end
end
class TestClass
  mattr_accessor :variable
end
class TestClass
  @@varible = "var"

  class << self
    def variable
      @@varible
    end
  end

 # above is the same as
 # def self.variable
 #   @@variable
 # end
end

TestClass.variable
#=> "var"