微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

动态添加ruby类方法或实例方法

我对 Ruby很新,所以还在学习.我正在研究如何动态添加方法,我成功地创建了实例方法,但是在创建类方法时并不成功.

这是我如何生成实例方法

class B
    def before_method
      puts "before method"
    end

    def self.run(method)
        send :define_method,method do
          before_method
          puts "method #{method}"
        end
    end
  end

  class A < B
    run :m
    run :n
  end

关于创建静态方法的最佳方法的任何想法?

我的最后一个任务是寻找为类方法创建“之前”和“之后”任务的最佳方法.

解决方法

这里重新使用类方法
class B
   def self.before_method
     puts "before method"
   end

  def self.run(method)
    define_singleton_method(method) do
      before_method
      puts "method #{method}"
    end
  end
end

更新:使用来自Ruby 1.9的define_singleton_method,它正确分配给eigenclass.

原文地址:https://www.jb51.cc/ruby/267152.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐