[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Closures defined inside a class method

Paul Brannan

9/13/2007 5:01:00 PM

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