scope struct?
    Steve Teale 
    steve.teale at britseyeview.com
       
    Sun Oct 16 21:47:36 PDT 2011
    
    
  
Is not needed because structs are inherently scope.
I'm sure experienced D programmers do this all the time when they want 
something done on exit from a scope, but I never had, and maybe there are 
others who haven't, particularly if coming from a C++ 'use classes for 
everything' background.
import std.stdio;
bool glob;
struct Sentinel
{
   void function() doit;
   bool already;
   this(void function() f)
   {
      doit = f;
      already = false;
   }
   ~this()
   {
      if (!already)
      {
         writeln("Doing it now");
         doit();
      }
      else
         writeln("Won't bother");
   }
   void dontBother() { already = true; }
}
void reset() { glob = false; }
void main(string[] args)
{
   glob = true;
   {
      Sentinel s = Sentinel(&reset);
      writeln("Doing stuff in the scope");
      if (args.length >= 2 && args[1] == "db")
         s.dontBother();
   }
   writeln(glob);
}
    
    
More information about the Digitalmars-d-learn
mailing list