On 6/12/06, Joel VanderWerf <vjoel / path.berkeley.edu> wrote:
> Mark Volkmann wrote:
> > I understand that methods defined at the top-level, not in any class,
> > become methods of the class Object. Pickaxe 2 says in its discussion
> > of the top-level environment (page 293 in my paper copy) "we're
> > actually creating (private) instance methods for class Object". I
> > think the "(private)" part is wrong because I can invoke top-level
> > methods using a receiver, which I shouldn't be able to do for private
> > methods.
> >
> > Here's an example.
> >
> > def foo; puts 'in foo'; end
> > class Bar; end
> > bar = Bar.new
> > bar.foo
> >
> > Am I misunderstanding this?
> >
>
> Don't you get an error when you call bar.foo?
>
> $ ruby -e "
> def foo; puts 'in foo'; end
> class Bar; end
> bar = Bar.new
> bar.foo
> "
> -e:5: private method `foo' called for #<Bar:0xb7dcccec> (NoMethodError)

Hmm ... yes I do. However, I don't get an error if I enter the same
code in irb. That's all I had tried before because I thought it would
be equivalent. I wonder why it's different there.

-- 
R. Mark Volkmann
Object Computing, Inc.