The documentation is very straight forward and the mentioned example
also cleared all the lines except the one mentioned inside **.
http://ruby-doc.org/core-2.0.0/Module.html#method-i-module_function
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."?
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit
https://groups.google.com/d/msgid/rubyonrails-talk/5a19164430bc09f5e89b1766a48e5bf3%40ruby-forum.com.
For more options, visit https://groups.google.com/groups/opt_out.
> 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" -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/4325306fab9efe46f82cd965e21134ac%40ruby-forum.com. For more options, visit https://groups.google.com/groups/opt_out.
On Aug 29, 2013, at 2:16 PM, Love U Ruby <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Please help me to understand what does mean by "If used with no > arguments, subsequently defined methods become module functions."?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 -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/58BD364C-563B-439E-AA7B-D4068A1B521C%40gmail.com. For more options, visit https://groups.google.com/groups/opt_out.