www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - what is full closures

reply bobef <bobef abv-nospam.bg> writes:
Sounds like something useful but what is full closure and what is the
difference from the current (D1 - empty? :) ) closures?
Jan 03 2008
parent reply Sean Kelly <sean f4.ca> writes:
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
Jan 03 2008
parent bobef <bobef abv-nospam.bg> writes:
Oh, this is nice. Thank you for the explanation.
Jan 03 2008