我想在foo1
的范围内引用动态创建的类变量foo2
,foo3
和sum_class_vars
,而不知道它们的标识符是什么。例如,让我们实现一个sum函数,它对变量求和。
class Test
def initialize
end
def sum_class_vars
end
end
t = Test.new
#add class variables foo1 foo2 foo3 to Test
我该怎么做?
答案 0 :(得分:2)
与通常的变量一样,但仅在声明后使用:
class Test
def initialize
end
def sum_class_vars
foo1 + foo2 + foo3
end
end
t = Test.new
class << t
attr_accessor :foo1, :foo2, :foo3
end
t.foo1 = t.foo2 = t.foo3 = 2
p t.sum_class_vars
#=> 6
答案 1 :(得分:0)
class Test
def sum_instance_vars
foo1 + foo2
end
end
Test.send(:attr_accessor, :foo1, :foo2, :foo3)
t1 = Test.new
#=> #<Test:0x007fe12c014838>
t1.foo1 = 1
t1.foo2 = 2
t1
#=> #<Test:0x007fe12c014838 @foo2=2, @foo1=1>
t1.sum_instance_vars
#=> 3
@foo1
和@foo2
是实例变量,而不是类变量(或类实例变量)。< / p>