Gavri Fernandez wrote: > Hi everyone, > >>From the pickaxe first edition: > "At the top level, we're executing code in the context of some > predefined object. When we define methods, we're actually creating > (private) singleton methods for this object." > > Is this true? It is true that methods defined at the top-level are > defined as singleton methods of "main" - the top level object? I > thought that the methods added at the top-level are defined as private > methods of Object. (Where I learnt this from, I'm not sure). > Experimenting gave me the latter result. > > >>def whoa >> puts "in whoa" >>end >>puts Object.new.private_methods.find {|x| x == "whoa"} > > > prints "whoa\n" to the screen. > > So is the pickaxe wrong? Or am I missing something big? It seems to be defined in both: p self # => main p self.class # => Object def foo p 'foo' end p self.private_methods(false) # => ["initialize", "foo", "Rational"] p Object.new.private_methods(false) # => ["initialize", "foo", "Rational"] __END__ Hmmm, I need to play around with this some more. Ryan