ruby_的class_eval和instance_eval简记
?
有很多文章来讲这个ruby rails中最重要最频繁使用的方法。
详细的理解,还需要去仔细理解ruby中的对象模型等。
略。
?
时间一长,就会忘记的,或者得回忆一下了,尤其是去写一段时间别的语言例如java python,再回来的时候,发现,哦,忘记了~需要再想想对象模型,恩,理解了。
?
很麻烦,对不对,何不让大脑休息一下~找个简记方法吧:
*1 C.class_eval "eval_str" 等价于在C中放入eval_str这段代码;
? ? ?class_eval只有类对象(Class Object)才能执行,普通对象没有这个方法
*2 obj.instance_eval "eval_str" 等价于class << obj eval_str end,也就是在obj的单例类中放入eval_str这段代码
? ? ?同时还能访问obj的实例变量!
? ? ?instance_eval对任意实例都可以运行
?
?
?
原理简记:
*1 The Module class defines a method named?class_eval?. (module_eval is a synonym for class_eval .)?
? ? ?Class < Module < Object
*2 The Object class defines a method named instance_eval.?ruby中都是对象,所以都可以运行哈。
?
?
?
====本文结束====
--------本文结束--------
..........本文结束..........
?