用子模块方法和常量扩展模块

时间:2018-07-02 01:04:19

标签: ruby module

我希望能够使用子模块的方法和常量扩展模块。

如果我使用extend,则会收到未定义的常量。

使它起作用的唯一方法是同时使用extendinclude。我也尝试在子模块上使用self.method。

module Car
  module Container
    HOLA = 'Helloo!'
    def testing
      HOLA
    end
  end
  include Container
  extend Container
end

所以这两个都应该起作用:

Car.testing # Hello!
Car::HOLA   # Hello!

我想这是代码的味道...,但是您知道还有什么其他方法可以使它起作用?

1 个答案:

答案 0 :(得分:0)

根据共享的描述,您似乎想要访问some_other_class中的嵌套模块常量和方法。

这是帖子中提到的模块定义。

module Car
 module Container
  HOLA = 'Helloo!'
  def testing
   HOLA
  end
 end
end

现在假设,您想在某些类(例如Vehicle)中使用此方法

require 'car' #this is the module file since it is residing in some other file

class Vehicle
  extend Car

  def test
    Car.testing
  end
end

现在调用Vehicle.new.test将打印

"Helloo!"

希望有帮助!