Hi Jeff,
I'm trying to understand #methods and #public_instance_methods as I
learn about introspection in Ruby.
If I do String.methods in irb, I get a lot fewer listed than if I try
String.public_instance_methods. I would have guessed that
String.public_instance_methods would be a subset of String.methods.
Also, ri String.public_instance_methods has no information, and
public_instance_methods is not listed on ruby-doc.org/core. I only
found it by doing a String.methods.
Can anyone shed some light here?
#methods returns the list of methods callable for that _object_. That is,
if you call String.methods, you get the methods for the String object (the
object of class Class, if you prefer ).
#public_instance_methods, on the other hand, is a method defined for Class
objects (perhaps some other, but anyway). It returns the methods callable for
the _objects of that class_.
E.g.: if String.methods return ['a', 'b', 'c'] and
String.public_instance_methods return ['d', 'e', 'f'], you can call String.a,
String.b, String.c, "foo".d, "bar".e, "qux".f.
You can also call String.public_instance_methods(false) if you only want
the methods defined in the class String, but not inherited from
String.superclass.
HTH,
···
On Thu, Dec 15, 2005 at 02:24:10AM +0900, Jeff Cohen wrote:
--
Esteban Manchado Velázquez <zoso@foton.es> - http://www.foton.es
EuropeSwPatentFree - http://EuropeSwPatentFree.hispalinux.es