ruby metaprogramming 0

来源:互联网 发布:克利夫兰州立大学 知乎 编辑:程序博客网 时间:2024/06/03 19:09

Resource: Metaprogramming in Ruby


Metaprogramming is giving your programs  the ability to manipulate themselves at run time.

Names of classes in ruby are just constants.

Classes  are objects of class Class. Class is object Class itself. 

All objects can have methods which are instance methods of its class. So Classes can have methods which are methods of instance methods of Class.

We can insert methods to a object. So we can insert methods to object of Class.


But how class Class know what kind of methods you want in your own class? The answer is:  When you define class method in your class or you insert methods to objects an anonymous class is created and inserted to the inheritance hierarchy as a container to hold the methods.


Everyone of the following patterns will makes ruby to create a anonymous for you.

# 1class Rubyist  def self.who    "Geek"  endend# 2class Rubyist  class << self    def who      "Geek"    end  endend# 3class Rubyistenddef Rubyist.who  "Geek"end#4class RubyistendRubyist.instance_eval do  def who    "Geek"  endendputs Rubyist.who # => Geek# 5class << Rubyist  def who    "Geek"  endend





BasicObject >> Object  >> Module >> Class >> Fixnum << Integer << Numeric << Object <<BasicObject

0 0