Ruby模块中的私有常用方法

时间:2016-07-27 03:47:35

标签: ruby oop module

道歉,因为有点小说! :)。有没有办法让我可以在我在其中定义的类中使用通用的私有方法。例如,我可以:

Module MyMod
 class MyClass
   ...
   method1()
 end
 class MyClass2
  ...
  method1()
 end
 private
 def method1()
   ...
 end
end

我在猜测,称他们如下:

a = MyMod::MyClass.new

但它给了我一个错误,即method1不可用。

沿着这些方向的东西?我尝试使用自习,但似乎没有用。

谢谢!

2 个答案:

答案 0 :(得分:1)

请尝试这种方式

module MyModule
  class A
    def my_method_a
      MyModule.my_method
    end
  end

  class B
    def my_method_b
      MyModule.my_method
    end
  end

  private
  module_function
  def my_method
    puts "hello"
  end
end

和  然后

a = MyModule::A.new 
a.my_method_a

答案 1 :(得分:0)

是的,你可以这样做,例如。

module MyModule
  class A
    def my_method_a
      my_method
    end
  end

  class B
    def my_method_b
      my_method
    end
  end

  private
  def my_method
    puts "hello"
  end
end
a = A.new
a.my_method_a
output => "hello"

但是你将无法使用a.my_method,因为它是一种私人方法。