`
fantaxy025025
  • 浏览: 1252820 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

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中都是对象,所以都可以运行哈。

 

 

 

====本文结束====

--------本文结束--------

..........本文结束..........

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics