what is full closures
Sean Kelly
sean at f4.ca
Thu Jan 3 08:16:15 PST 2008
bobef wrote:
> Sounds like something useful but what is full closure and what is the difference from the current (D1 - empty? :) ) closures?
A full closure is where all data relevant to a delegate is retained
until the delegate is destroyed. ie.
void delegate() fn( int i )
{
return delegate void() { writefln( "i is ", i ); };
}
fn( 1 )();
In D 1.0, this code would crash because the stack location for i no
longer exists when the delegate is called. In D 2.0, memory for i is
allocated on the heap and this code works.
Sean
More information about the Digitalmars-d-learn
mailing list