Ruby-实例变量作为类变量

Ruby-实例变量作为类变量,ruby,class,instance-variables,Ruby,Class,Instance Variables,我有一门课: class Foo def self.test @test end def foo @test = 1 bar end private def bar @test = 2 end end object = Foo.new.foo Foo.test # => nil 我将其输出到输出“2”的唯一方法是将@test设置为类变量。使用实例变量并能够用Foo.test显示它还有其他方法吗?我不太清楚您想要实现什

我有一门课:

class Foo

  def self.test
    @test
  end

  def foo
    @test = 1
    bar
  end

  private

  def bar
    @test = 2
  end
end

object = Foo.new.foo
Foo.test

# => nil

我将其输出到输出“2”的唯一方法是将
@test
设置为类变量。使用实例变量并能够用
Foo.test
显示它还有其他方法吗?

我不太清楚您想要实现什么,以及为什么。下面是一个带有“类实例变量”的示例。它可能是您正在寻找的:

class Foo
  class << self
    attr_accessor :test
  end

  attr_accessor :test

  def foo
    @test = 1
    bar
  end

  private

  def bar
    Foo.test = 2
  end
end

foo = Foo.new
foo.foo
p foo.test
#=> 1
p Foo.test
#=> 2
class-Foo
第一类
p Foo.test
#=> 2

Foo.test
这是一个类方法,无法访问实例变量。您真正的目标是什么?您正在使用不同的对象,因此它们显然无法访问相同的实例变量。您在同一时间与我一起发表了评论lol。这就是问题的目的,如何避免使用@但得到相同的结果。不过我的版本有点不同。