Ruby 元编程索引
大概会持续更新吧。。。。
打开类 Open Class
猴子补丁 Monkeypatch
接受者(receiver)和祖先链(ancestors chain)eg: 查看String 类的祖先连 String.ancestors
-
- included
- extended
- prepended
- inherited
- method_missing (幽灵方法): 当接受的反方法不存在时会调用这个方法,配合
*arg
可以接受任意个数的参数
1
2
3def method_missing(method, *args)
"The method #{method} with you call not exists"
end -
- send (Obj.send(:define_method, ‘desc’))
- public_send
instance_eval 方法仅仅会修改 self,而 class_eval 方法会同时修改 self 和当前类
const_missing
define_const
白板类 BasicObject
eval, instance_eval, module_eval, class_eval
-
- attr_reader (getter)
- attr_writer (setter)
define_method 添加类的实例方法
A.send(:define_method, :hi, &p1)
等于Class A; define_method, :hi, &p1; end
singleton_class 添加类所具有的方法
A.singleton_class.send(:define_method, :hi, &p1)
等于Class A; self.define_method, :hi, &p1; end
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hi! 上天不?!
评论