• 两段元编程代码的疑问 at 2015年12月25日

    第一个问题 @luolinae86 说得挺清楚了,第二个问题的话,instance_eval 不是打开类,class_eval 才是打开类,instance_eval 是改变闭包中 self 的指向,把 self 指向消息接受者,你的例子里就是 Load,所以可以访问 Load 的实例变量 @time_class。而由于闭包可以捕获声明环境中的变量所以可以捕获 FakeTime,然后把 FakeTime 这个对象(也是类)赋值给 @time_class ,就 OK 了。