新手..问题描述很乱..
class Class
def set_class_method(sym,&block)
obj = self.allocate
self.send(:define_method,sym,block)
end
end
A = Class.new
a = A.new
b = A.new
A.set_class_method(:m){@s = 2}#检查{@s = 2}的时候发现是Proc类型
a.instance_variable_get(:@s)#nil
b.instance_variable_get(:@s)#nil
a.m
a.instance_variable_get(:@s)#2
b.instance_variable_get(:@s)#nil
A.set_class_method(:m){@s = 3}
A.set_class_method(:m,&b.method(:m).to_proc)#传入的还是Proc类型
a.m
a.instance_variable_get(:@s)#2,没有变化
b.instance_variable_get(:@s)#3
第一个 proc 似乎没有指定 self,第二个的 self 是 b 有没有什么办法可以让第二个 proc 像第一个一样,不指定 self