ruby gem metaid 源码阅读

ruby gem metaid 源码阅读
metaid.rb的代码不长,如下
class Object
    # The hidden singleton lurks behind everyone
    def metaclass; class << self; self; end; end
    def meta_eval &blk; metaclass.instance_eval &blk; end

    # Adds methods to a metaclass
    def meta_def name, &blk
        meta_eval { define_method name, &blk }
    end

    # Defines an instance method within a class
    def class_def name, &blk
        class_eval { define_method name, &blk }
    end
end
我看了《ruby元编程》后,对之有一些理解,但第一次看代码,还是有些迷糊。
静下心来,慢慢读,然后打开irb进行测试,才有了一些体会。
打开irb
require 'metaid'
为防止错误,我再做试验一次。
a="ok"
a.metaclass
此处,可以看到该方法调用的结果。显示单件类。
a.meta_eval {a="hello"}
把self当成a
a.meta_def :h1 do ; puts "hello2"; end
添加方法到单件类中
class T1
   class_def :m1 do; puts "haha"; end
end
b=T1.new
b.m1
这里给类添加方法。
为了看camping.rb我,先做铺垫了。先把代码的意思弄明白,再慢慢找原理。


 

猜你喜欢

转载自blog.csdn.net/woshiyilitongdouzi/article/details/81529729