On Feb 7, 2008 5:55 PM, Aryk Grosz <tennisbum2002 / hotmail.com> wrote:
> And I want to add a function to it. Whats the difference between:
>
> module A
> class B
> def new_function
> puts "foo"
> end
> end
> end
>
> ***AND***
>
> A::B.class_eval do
> def new_function
> puts "foo"
> end
> end
>
> Is there any difference?

Kind of hard to read all this nesting without some kind of spacing for
help. Or did it just get stripped for me, for some reason?

Anyway, I think, if you're writing out the method ahead of time,
there's not a real difference. However, if you wanted to create
methods on the fly based on something else (who knows what...), you'd
want, of the two, class_eval. Though, really, you'd probably want to
use add_method, or whatever the name of the function for doing that is
(can't remember right now).


Ben