Need a bit help on "module_function" method

The documentation is very straight forward and the mentioned example also cleared all the lines except the one mentioned inside **.

Creates module functions for the named methods. These functions may be called with the module as a receiver, and also become available as instance methods to classes that mix in the module. Module functions are copies of the original, and so may be changed independently. The instance-method versions are made private. *If used with no arguments, subsequently defined methods become module functions.*

module Mod   def one     "This is one"   end   module_function :one end class Cls   include Mod   def call_one     one   end end Mod.one #=> "This is one" c = Cls.new c.call_one #=> "This is one" module Mod   def one     "This is the new one"   end end Mod.one #=> "This is one" c.call_one #=> "This is the new one"

Please help me to understand what does mean by "If used with no arguments, subsequently defined methods become module functions."?

Please help me to understand what does mean by "If used with no arguments, subsequently defined methods become module functions."?

Okay got it now:-

module Party   module_function   def foo     "I am foo"   end   def bar     "I am bar"   end end

Party.foo # => "I am foo" Party.bar # => "I am bar"

That means you can use it as a means of saying "All the methods defined below are module functions":

Module M

  def foo   end

  module_function

  def bar   end

  def baz   end

end

and so you can then call M.bar and M.baz, but not M.foo.

This is identical to:

Module M   def foo;end   def bar;end   def baz;end   module_function :bar, :baz end

It is *also* identical to:

Module M   def foo;end   def self.bar; end   def self.baz; end end