Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

getting method names for a Class

0 views
Skip to first unread message

Mark Volkmann

unread,
Feb 10, 2006, 10:46:28 AM2/10/06
to
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.


David Vallner

unread,
Feb 10, 2006, 1:24:21 PM2/10/06
to
Dňa Piatok 10 Február 2006 16:46 Mark Volkmann napísal:

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


0 new messages