本系列翻译自 Metaprogramming in Ruby 站点上的课程笔记,并加入了我(DeathKing)的一些个人演绎、资料补充等。希望对大家有所帮助。

  该课程由Satoshi Asakawa讲授,使用ruby 1.9.1p243 [i386-mingw32]。而我的测试环境则是ruby 1.9.2p180 [i386-mingw32]

  出于使得内容更加充实且读者可以从不同的角度来认识元编程,本文在未经原作者的允许下引用了大量的网络资源,虽然保留了出处,但还是多有冒犯。若有不周之处,欢迎告知。

 

  • 0.0 序言
  • 0.1 翻译的动机
  • 0.2 元编程概览
  • 0.3 一点技术上的细节
  • 0.4 更多的参考资料
  • 1.0 Ruby元编程
  • 1.1 实例方法、方法、类
    • 1.1.1 对象的实例变量及方法
    • 1.1.2 类
    • 1.1.3 类是开放的
    • 1.1.4 多层次的initialize()方法
    • 1.1.5 匿名类
    • 1.1.6 
  • 1.3 实用元编程方法
    • 1.3.1 内省、反射
    • 1.3.2 send
    • 1.3.3 define_method
    • 1.3.4 method_missing
    • 1.3.5 remove_methodundef_method
    • 1.3.6 eval
    • 1.3.7 instance_eval,module_eval,class_eval
      • instance_eval
      • module_eval,class_eval
    • 1.3.8 class_variable_get,class_variable_set
    • 1.3.9 class_variable
    • 1.3.10 instance_variable_get,instance_variable_set
    • 1.3.11 const_get,const_set
  • 1.6 元编程实战
    • 1.6.1 问题1
      • 1.6.1.1 现存的问题和方法
      • 1.6.1.2 常规做法
      • 1.6.1.3 使用Class.newdefine_method的解决方法
    • 1.6.2 问题2