首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使一个模块继承Ruby中的另一个模块

使一个模块继承Ruby中的另一个模块
EN

Stack Overflow用户
提问于 2012-04-15 08:59:43
回答 1查看 28.2K关注 0票数 29

我正在为Rails编写一个小程序,其中包括我在ApplicationHelper模块内的一个模块中构建的一些方法。下面是一个例子:

代码语言:javascript
复制
module Helper
    def time
        Time.now.year
    end
end

module ApplicationHelper
    # Inherit from Helper here...
end

我知道ApplicationHelper < Helperinclude Helper可以在类的上下文中工作,但是你会用什么来实现模块到模块的继承呢?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-07-23 21:45:13

一个潜在的陷阱是,如果包含的模块附加了类方法,那么这些方法可能会附加到错误的对象。

在某些情况下,将“父”模块直接包含在基类中可能更安全,然后在新方法中包含另一个模块。例如:

代码语言:javascript
复制
module ApplicationHelper
  def self.included(base)
    base.class_eval do
      include Helper
      include InstanceMethods
    end
  end

  module InstanceMethods
    def new_method
      #..
    end
  end

end

新方法不是直接在ApplicationHelper中定义的,因为include Helper将在方法定义之后运行,从而导致它们被Helper覆盖。也可以在class_eval块中定义方法

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10158730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档