如何在模块内部的类之外定义方法?

时间:2015-09-25 13:01:56

标签: ruby class methods module

除了在同一模块中使用此方法的类外,如何定义方法?

我想做什么:

module X
  def bar
    puts 'Hello'
  end

  class Y
    def foo
      bar
    end
  end
end

我想使用bar来调用Y.new.foo方法。我想在我的模块中定义方法,以便该模块中的所有类都将继承它们。

为什么这不起作用?最接近的方法是什么?

3 个答案:

答案 0 :(得分:3)

假设您不希望在类中包含该模块,则无法引用该方法,因为没有实例可以调用它。你可以改为: 模块X.   def self.bar     放'你好'   结束   Y级     def foo       X.bar     结束   结束 结束

答案 1 :(得分:1)

我认为最好使用单独的对象来定义共享方法,而不是污染名称空间对象。

module X

  module InstanceMethods
    def bar
      puts 'Hello'
    end
  end

  class Y
    include InstanceMethods
    def foo
      bar
    end
  end

end

答案 2 :(得分:0)

如果你想使用很多方法,最好使用include

module X
  def bar
    puts 'Hello'
  end

  class Y
    include X
    def foo
      bar
    end
  end
end