From: Paul Brannan Date: 2007-09-14T02:01:27+09:00 Subject: Re: Closures defined inside a class method On Fri, Sep 14, 2007 at 12:04:55AM +0900, Ian Leitch wrote: > This is just weird... > > class ClassA > def self.func1 > def func2 > puts "In func2" > end > func2 > end > end > > > ClassA.func1 > => NameError: undefined local variable or method `func2' for ClassA:Class I think you want: class ClassA def self.func1 def self.func2 puts "In func2" end func2 end end In your example you defined an instance method func2, not a singleton method func2, so you would need to create an instance in order to call the method (it would be just as if the method definition for func2 were outside func1). > func2 looks as though it's defined as a closure inside class scope func1 > (though it isn't ^^^^), yet I can call it on an instance of the class? It's not a closure; func2 does not have access to the scope in which it was defined. Paul