我有一个班级:
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
显示它?
答案 0 :(得分:1)
我不清楚你想要实现什么,以及为什么。这是一个带有“类实例变量”的示例。这可能是你在寻找的东西:
enums
答案 1 :(得分:0)
因为使用 class << self
attr_accessor :test
end
(类变量)被认为是“代码味道”,您应该使用类实例变量。
您可以通过添加:
class Foo
class << self
attr_accessor :test
end
def foo
Foo.test = 1
bar
end
private
def bar
Foo.test = 2
end
end
object = Foo.new.foo
Foo.test
# => 2
你重写了这个类:
FinalityFlow