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.