ruby - 了解 self.including 在 ruby​​ 中

标签 ruby module

假设我有

module Mod
  def self.included(base)
      some_method
    end
  def some_method
  end
end

class A 
  include Mod
end

我得到 some_method 未定义。那么如何在包含 Mod 后立即调用 some_method 呢?

最佳答案

您必须创建一个base 类实例来调用它。

module Mod
  def self.included(base)
      base.new.some_method
  end
  def some_method
  end
end

class A 
  include Mod
end

包含模块Mod之后,some_method 将作为类A 实例的实例方法可用。

关于ruby - 了解 self.including 在 ruby​​ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22860126/

相关文章:

javascript - 在 React 中使用 fullcalendar v4 导入 rrule 插件

ruby - 为 Ruby 模块中的每个方法调用执行代码

ruby-on-rails - 尝试通过 rspec 测试失败

ruby-on-rails - 如何修复此 before_destroy 回调 [rails]

linux - BeagleBoard 循环计数器

perl - 无法在运行时加载 `Cwd`(以及其他非核心模块)

ruby-on-rails - 在 Mongo 数据库中克隆文档

ruby - 如何解析 Ruby 中的时间间隔?

mysql - 使用 Ruby on Rails 进行安全/更好的 SQL 查询

android - 如何在monkeyrunner测试文件中导入一个py文件函数