当前位置:  开发笔记 > 编程语言 > 正文

如何动态覆盖方法

如何解决《如何动态覆盖方法》经验,为你挑选了1个好方法。

我想Hash#[]=通过调用方法动态覆盖方法f.以下代码不起作用,因为方法内不允许类定义:

def f
  class Hash
    def []=(k, v)
      ...
    end
  end
end

解决方法是放入class Hash一个单独的文件

def f
  require 'my_hash.rb'
end

我想知道是否有办法避免添加单独的文件.



1> sawa..:
def f
  Hash.send(:define_method, :[]=) do |x, y|
    ...
  end
end

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有