On 6/2/07, Trans <transfire / gmail.com> wrote:
>
>
> On Jun 1, 6:57 pm, "Rick DeNatale" <rick.denat... / gmail.com> wrote:

> > Now if one wanted to avoid re-defining such inner methods, one could
> > write something like:
> >
> > class A
> >     def outer
> >         unless self.class.instance_methods(false).include?(:inner)
> >             def inner
> >                  "inner: a regular instance method"
> >             end
> >        end
> >         unless singleton_methods(false).include?(:my_inner)
> >             def self.my_inner
> >                  "my_inner: a singleton instance method"
> >             end
> >        end
> >     end
> > end
>
> Could. Though the would not work if the method were defined in an
> included module.

It was a conscious choice on my part to using instance_methods(false)
for the instance method. This allows overriding with a new method, but
not redefining it the second time.  If you wanted to not override then
you could use just instance_methods with the default true parameter
which returns methods from superclasses and included modules also.

It's a matter of what you are trying to do. There are other techniques
for determining the current state, like using defined?, with different
variations and edge cases.
-- 
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/