我在类中动态创建了一个实例变量:
class Mine
attr_accessor :some_var
def intialize
@some_var = true
end
def my_number num
self.instance_variable_set "@my_#{num}", num
end
end
如何将@my_#{num}
现在作为属性值?
例如,我想要能够做到这一点:
dude = Mine.new
dude.my_number 1
dude.my_1
=> 1
singleton_class
有什么理由吗?同时,作为一种单行写法,class_eval { attr_accessor:"my_#{num}" }
语法会更清晰 :) - Halil Özgürsingleton_class
的原因,如果你使用self.class
,那么所有实例都会获得该方法,而你并不想要那样。你对语法的理解是正确的,我会进行更改。 - Orlandoclass << self
是相同的。 - Orlandoclass_eval
是一个类方法,而不是实例方法。 - Orlando