在mixin中加入mixin

时间:2014-05-22 18:20:22

标签: ruby

我想做这样的事情:

module Mixin
  def self.included(base)
    base.include AnotherMixin
    ...
  end
end

给出错误

NoMethodError - private method `include' called for Class

如何在mixin中包含mixin以用于我定义的方法?

1 个答案:

答案 0 :(得分:3)

  

如何在mixin中包含mixin以用于我定义的方法?

由于错误消息清楚地告诉您,#include私有方法,因此在Ruby中不允许使用显式接收器。因此,要完成此操作,您只需要从base的方法调用中删除#include。它将在模块AnotherMixin内包含模块mixin。现在,#include被隐式self调用,它已被设置为模块对象Mixin

以下将完成工作: -

module Mixin
  def self.included(base)
    include AnotherMixin
    #...
  end
end