ruby - "base.send :include, InstanceMethods"---> 这是做什么的?

标签 ruby

我正在查看一个模块 X,它包含两个名为“InstanceMethods”和“ClassMethods”的模块。

模块 X 中的最后一个定义是这样的:

  def self.included(base)
    base.send :include, InstanceMethods
    base.send :extend,  ClassMethods
  end

这是做什么的?

最佳答案

included 在一个模块被包含到另一个模块或类中时被调用。在这种情况下,它将尝试调用 baseinclude 方法来从 InstanceMethods 中获取模块方法、变量和常量添加到 base 然后将尝试调用 baseextend 方法来从 ClassMethods 中获取实例方法添加到 base

也可以是

def self.included( base )
  base.include( InstanceMethods )
  base.extend( ClassMethods )
end

关于ruby - "base.send :include, InstanceMethods"---> 这是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/973650/

相关文章:

ruby - 如何从 Proc 对象中提取代码?

ruby-on-rails - 我以错误的方式删除了 Rails gem - 我该怎么办?

ruby-on-rails - method_missing 当 `rake test` 加载模型时,尽管如果 Rails 加载模型则正确加载

ruby - ruby 如何处理零除法?

ruby - 比较具有相同元素的三个数组的顺序

ruby-on-rails - 用 Nokogiri 解析然后保存到数据库?

php - 使用 Ruby、PHP 或 Python 的音频水印

ruby - 是否有一种惯用的 Ruby 方法可以根据真值执行 "if"或 "unless"?

ruby - 我可以使用 Ruby 的 OptionParser 来接受任意参数模式吗?

ruby-on-rails - 创建许多新对象时内存膨胀