digitalmars.D.learn - what is full closures
- bobef (1/1) Jan 03 2008 Sounds like something useful but what is full closure and what is the di...
- Sean Kelly (12/13) Jan 03 2008 A full closure is where all data relevant to a delegate is retained
- bobef (1/1) Jan 03 2008 Oh, this is nice. Thank you for the explanation.
Sounds like something useful but what is full closure and what is the difference from the current (D1 - empty? :) ) closures?
Jan 03 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
Jan 03 2008