David Vallner
2/10/2006 6:24:00 PM
Dna Piatok 10 Február 2006 16:46 Mark Volkmann napísal:
> There are so many methods in Object and Module that return arrays of
> method names that it can be a bit confusing. Here's a summary of my
> current understanding. Is any of this wrong?
>
> "instance_methods" is a method from Module.
> Pass it true to include inherited methods (the default) and false to
> exclude them.
> To get the names of public *instance* methods in the class Foo, use
> Foo.instance_methods.
>
> "methods" is a method from Object.
> Pass it true to get instance methods (the default) and false to get
> singleton methods.
> A singleton method on a Ruby Class is essentially like a static method in
> Java. To get the names of public *class* methods in the class Foo, use
> Foo.methods(false).
>
> Foo.methods(false) == Foo.singleton_methods(false)
>
> Why doesn't Foo.methods(true) return the same thing as
> Foo.instance_methods(true)?
>
> I can see using a boolean parameter to tell whether you want inherited
> methods to be included (as in the instance_methods method). However,
> using a boolean parameter to tell whether you want instance or
> singleton methods (as in the method "methods") seems bad. Maybe that
> should be deprecated in favor of instance_methods and
> singleton_methods.
>
> --
> R. Mark Volkmann
> Partner, Object Computing, Inc.
Because #instance_methods shows methods an instance of Foo will have, and
#methods and #singleton_methods show you methods of the class object Foo?
Just a guess there.
David Vallner